ubuntu shell脚本的指令问题
在看《鸟哥的私房菜》,其中有一些指令在fishshell里是错误的指令,怎么回事呢,是不是要安装什么软件包啊?比如declare这个指令就不能用,写成脚本也不行。。。求高...
在看《鸟哥的私房菜》,其中有一些指令在fish shell里是错误的指令,怎么回事呢,是不是要安装什么软件包啊?比如declare 这个指令就不能用,写成脚本也不行。。。
求高手指点。。。
PS:希望说得具体一点,我是个菜鸟, 解决后另加分。
非常感谢你们的指点,但都没有说到重点。 我想说的是那教程上的某些指令在shell中不能使用,就像是不存在那个指令一样。比如前面提到的declare,就不能用。想知道为什么会出现这种状况?怎么解决?,请高手现指点, 谢谢。。。
(--至于你们说的bash shell,电脑上安装了的,也能正常使用,但同样不能用前面提到的指令,常规指令能用。我喜欢fish 里的语法高亮功能,觉得比较适合像我这种菜鸟。) 展开
求高手指点。。。
PS:希望说得具体一点,我是个菜鸟, 解决后另加分。
非常感谢你们的指点,但都没有说到重点。 我想说的是那教程上的某些指令在shell中不能使用,就像是不存在那个指令一样。比如前面提到的declare,就不能用。想知道为什么会出现这种状况?怎么解决?,请高手现指点, 谢谢。。。
(--至于你们说的bash shell,电脑上安装了的,也能正常使用,但同样不能用前面提到的指令,常规指令能用。我喜欢fish 里的语法高亮功能,觉得比较适合像我这种菜鸟。) 展开
4个回答
展开全部
如果说是 declare 命令不能用,那原因是由于你用的不是bash.如果是其他命令(你最好列出来具体的命令名字),要么是由于你没有使用和《鸟哥》里所使用的同样的shell,要么就是你的系统里没有安装对应的软件。
比方说,有的命令是shell自带的命令,如declare, let 等,如果你发现不能用,那是由于使用的shell 不同或者版本不同。
有的命令不是shell自带命令,而是系统中装的一些工具软件, 比如 find, tar, grep 等等,这种类型的命令数量远大于shell自带命令,在ubuntu默认安装中,很可能有一些没有安装,需要你自己去装。
所以具体你缺什么命令,不一定是shell的问题,也可能是你没有安装对应软件包。
最后,建议你还是用bash,毕竟是最流行的shell,大多数人,大多数教程,都讲得是它,所以不建议你初学时用其他shell,等对linux shell有一定了解后,再换到自己喜欢用的shell会比较合适。
比方说,有的命令是shell自带的命令,如declare, let 等,如果你发现不能用,那是由于使用的shell 不同或者版本不同。
有的命令不是shell自带命令,而是系统中装的一些工具软件, 比如 find, tar, grep 等等,这种类型的命令数量远大于shell自带命令,在ubuntu默认安装中,很可能有一些没有安装,需要你自己去装。
所以具体你缺什么命令,不一定是shell的问题,也可能是你没有安装对应软件包。
最后,建议你还是用bash,毕竟是最流行的shell,大多数人,大多数教程,都讲得是它,所以不建议你初学时用其他shell,等对linux shell有一定了解后,再换到自己喜欢用的shell会比较合适。
展开全部
补充和修正楼上的:
while :
-------------- :表示空指令,相当于 while true,一直循环
if ; then
--------------这里条件可以为空吗?我也没见过。
sleep 10
--------------暂停10秒
==============================================================
那条件就是:上面的ping指令执行失败,即网断。
$? 表示上一条命令的执行结果,0表示成功,其他值表示失败。
所以 if 语句这样写:
if [ $? -ne 0 ]; then
kill -9 `pidof mystar`
./mystar &
fi
网断的情况下就强制杀掉 mystar 进程然后将它重新启动。
while :
-------------- :表示空指令,相当于 while true,一直循环
if ; then
--------------这里条件可以为空吗?我也没见过。
sleep 10
--------------暂停10秒
==============================================================
那条件就是:上面的ping指令执行失败,即网断。
$? 表示上一条命令的执行结果,0表示成功,其他值表示失败。
所以 if 语句这样写:
if [ $? -ne 0 ]; then
kill -9 `pidof mystar`
./mystar &
fi
网断的情况下就强制杀掉 mystar 进程然后将它重新启动。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
U默认的SH是dash。
dash和bash的区别
使用dash时用sudo dpkg-reconfigure dash,按提示操作就可以了。
使用bash时用sudo dpkg-reconfigure bash
dash和bash的区别
使用dash时用sudo dpkg-reconfigure dash,按提示操作就可以了。
使用bash时用sudo dpkg-reconfigure bash
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用bash shell就行
sudo apt-get install bash
sudo apt-get install bash
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询