Bash 为什么$#总是返回0?
我正在尝试编写一个脚本,它只接受一个参数。我还在学习,所以我不明白我的代码出了什么问题。我不明白为什么,即使我更改了输入的数量,代码也只是退出。(注意:我将在后面的if-then语句中使用$dir,但我没有包括它。) 可以使用重新检查语法Bash 为什么$#总是返回0?,bash,arguments,Bash,Arguments,我正在尝试编写一个脚本,它只接受一个参数。我还在学习,所以我不明白我的代码出了什么问题。我不明白为什么,即使我更改了输入的数量,代码也只是退出。(注意:我将在后面的if-then语句中使用$dir,但我没有包括它。) 可以使用重新检查语法 $#告诉您使用多少参数调用脚本。 这里你有两个选择 选项1:使用参数 #!/bin/bash if [[ $# -ne 1 ]] then echo "Script requires one and only one argument&q
$#
告诉您使用多少参数调用脚本。
这里你有两个选择
选项1:使用参数
#!/bin/bash
if [[ $# -ne 1 ]]
then
echo "Script requires one and only one argument"
exit 1
else
echo "ok, arg1 is $1"
fi
- 要调用脚本,请执行以下操作:
/script.bash参数
- 使用测试条件()
:默认情况下,当存在状态代码为0的脚本时,表示它工作正常。因为这是一个错误,所以在这里指定一个非零值退出1
选项2:不要使用参数,请用户输入值。
注意:这个版本根本不使用参数
#!/bin/bash
read -r -p "Specify the name of the directory: " dir
if [[ ! -d "$dir" ]]
then
echo "Error, directory $dir does not exist."
exit 1
else
echo "ok, directory $dir exists."
fi
- 要调用脚本,请执行以下操作:
,不带任何参数/script.bash
$#
告诉您使用多少参数调用脚本。
这里你有两个选择
选项1:使用参数
#!/bin/bash
if [[ $# -ne 1 ]]
then
echo "Script requires one and only one argument"
exit 1
else
echo "ok, arg1 is $1"
fi
- 要调用脚本,请执行以下操作:
/script.bash参数
- 使用测试条件()
:默认情况下,当存在状态代码为0的脚本时,表示它工作正常。因为这是一个错误,所以在这里指定一个非零值退出1
选项2:不要使用参数,请用户输入值。
注意:这个版本根本不使用参数
#!/bin/bash
read -r -p "Specify the name of the directory: " dir
if [[ ! -d "$dir" ]]
then
echo "Error, directory $dir does not exist."
exit 1
else
echo "ok, directory $dir exists."
fi
- 要调用脚本,请执行以下操作:
,不带任何参数/script.bash
您应该研究bash教程,了解如何使用参数。为什么在检查参数数量之前要进行提示?您如何调用此脚本?如果删除提示并执行读取操作,会发生什么情况?你觉得测试怎么样?$#旁注:与echo/read不同,
bash
让你一次完成所有任务:read-r-p“prompt text here”dir
这里有误解吗$#
与read
无关-它是整个脚本的参数数。如果运行/foo.bash-aye“bee-bee”cee
,则脚本中的$#
将等于3。在脚本的第一行或最后一行,除非使用例如set
或shift
覆盖参数列表。为什么在检查参数数量之前要提示?您如何调用此脚本?如果删除提示并执行读取操作,会发生什么情况?你觉得测试怎么样?$#旁注:与echo/read不同,bash
让你一次完成所有任务:read-r-p“prompt text here”dir
这里有误解吗$#
与read
无关-它是整个脚本的参数数。如果运行/foo.bash-aye“bee-bee”cee
,则脚本中的$#
将等于3。在脚本的第一行或最后一行,除非使用例如set
或shift
覆盖参数列表。