Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Shell:read-t选项中bash3.2.57与4.3.41的区别?_Linux_Bash_Macos_Shell - Fatal编程技术网

Linux Shell:read-t选项中bash3.2.57与4.3.41的区别?

Linux Shell:read-t选项中bash3.2.57与4.3.41的区别?,linux,bash,macos,shell,Linux,Bash,Macos,Shell,我已经在我的笔记本电脑(OSX 10.11.6)上运行了以下代码,它按照我的要求工作(bash版本3.2.57): 我已将其中一个标记行更改为: a) a=${OPTARG} ***[[$a == "bla" || $a == "blubb"]] && usage*** an=$a;; 但这并没有改变任何事情。事实上,我不知道为什么这在我的笔记本电脑上可以正常工作,但在服务器上却不行

我已经在我的笔记本电脑(OSX 10.11.6)上运行了以下代码,它按照我的要求工作(bash版本3.2.57):

我已将其中一个标记行更改为:

            a)
            a=${OPTARG}
            ***[[$a == "bla" || $a == "blubb"]] && usage***
            an=$a;;
但这并没有改变任何事情。事实上,我不知道为什么这在我的笔记本电脑上可以正常工作,但在服务器上却不行


请告诉我我在哪里犯了错误。

在Ubuntu上,默认shell是
dash
。但是,您的脚本使用了
bash
功能。要解决此问题,请更换:

sh testing_stuff.sh -d /home/ -t 2 -a bla
与:


在Ubuntu和其他类似debian的系统上,默认的shell,
/bin/sh
,是
dash
。Dash兼容POSIX,重量轻,速度快,但它不支持较重的
bash
所支持的所有功能。如果您的脚本需要
bash
,而您的脚本需要,请在Ubuntu上的
bash
下显式运行它,默认shell是
dash
。但是,您的脚本使用了
bash
功能。要解决此问题,请更换:

sh testing_stuff.sh -d /home/ -t 2 -a bla
与:


在Ubuntu和其他类似debian的系统上,默认的shell,
/bin/sh
,是
dash
。Dash兼容POSIX,重量轻,速度快,但它不支持较重的
bash
所支持的所有功能。如果您的脚本需要
bash
,而您的脚本需要,请在
bash
下显式运行它。更好的是,添加一个
#/bin/bash
shebang行并在命令行中键入shell。是的,我在脚本中这样做。但是,OP使用的是
sh脚本
,这覆盖了shebang。谢谢@John1024,这对我很有帮助。但是我有一条蛇帮路线,我不得不像你建议的那样叫它。谢谢大家的宝贵意见。只有当您直接调用命令时,才会考虑使用shebang,例如
testing_stuff.sh-d/home/-t2-a bla
当您将
sh
放在前面时,您显式地调用了
sh
,这是Ubuntu上的
dash
。更好的是,添加一个
/bin/bash
shebang行并在命令行中键入shell。是的,我在脚本中这样做。但是,OP使用的是
sh脚本
,这覆盖了shebang。谢谢@John1024,这对我很有帮助。但是我有一条蛇帮路线,我不得不像你建议的那样叫它。谢谢大家的宝贵意见。只有当您直接调用命令时,才会考虑使用shebang,例如
testing_stuff.sh-d/home/-t2-a bla
当您将
sh
放在前面时,您明确地调用了
sh
,这是Ubuntu上的
dash
sh testing_stuff.sh -d /home/ -t 2 -a bla
bash testing_stuff.sh -d /home/ -t 2 -a bla