【发布时间】:2016-06-06 04:47:07
【问题描述】:
我正在学习 bash,我想自动化一系列我经常使用的命令。在这种情况下,它是 macchanger,并重新启动网络管理器。
#!/bin/bash
#Automated macchanger script
wlanDOWN=$(ifconfig wlan0 down)
change_mac=$(macchanger -r wlan0)
wlanUP=$(ifconfig wlan0 up)
verify=$(macchanger --show wlan0)
network_connect=$(sudo service network-manager restart)
confirmation=$(dialog --msgbox "Change complete" 10 30)
printf "%s\n" "$wlanDOWN"
printf "%s\n" "$change_mac"
printf "%s\n" "$wlanUP"
printf "%s\n" "$verify"
printf "%s\n" "To return to permanent mac address type 'macchanger --permanent <interface name>' "
printf "%s\n" "$network_connect"
printf "%s\n" "$confirmation"
当我执行这个脚本时
./hide_me
它只是挂起,直到我第二次按 Enter,然后它只显示新的 mac 地址并且不显示我的消息框。任何指针?谢谢朋友。
【问题讨论】:
-
while [ kill -0 "$pid" ]是错误的,你的意思可能是while kill -0 "$pid"。如果您需要更多帮助,您应该发布一个完整的示例。 -
是的,对不起。我以为我在提交之前粘贴了代码。它现在在那里。 :D
-
我删除了括号,现在我得到:第 32 行:kill: `': not a pid or valid job spec
-
我不太了解
dialog或如何正确使用它,不过我想它有一个庞大的手册页。您可能应该写一个 minimal reproducible example 来说明您遇到的具体问题。或者,您可以保留它 oldskool 并让您的 bash sea leg 编写简单的控制台脚本而不是文本 GUI,上帝希望这样的事情是这样的:) -
是的,但是在 debian/ubuntu 上设置 MySQL 等类似的东西是一种例外(并且非常特定于那些发行版),你典型的 shell 可移植脚本通常只是做它的事情(而潜在的呼应状态)并继续前进。所以,一般来说,从那个开始。如果您想添加这些特定于发行版的类似 GUI 的功能,那也可以,但是请尝试隔离与它们相关的特定问题并编写有关它们的问题。顺便说一句,如果您找到满意的答案,您可以回答自己的问题。