Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.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 美元在Bash中有什么用途_Linux_Bash - Fatal编程技术网

Linux 美元在Bash中有什么用途

Linux 美元在Bash中有什么用途,linux,bash,Linux,Bash,我对Bash脚本非常陌生,有人能给我解释一下$#和$是如何使用的吗?在以下代码中工作 #!/bin/bash ARGS=3 # Script requires 3 arguments. E_BADARGS=85 # Wrong number of arguments passed to script. if [ $# -ne "$ARGS" ] then echo "Usage: `basename $0` old-pattern new-pattern filena

我对Bash脚本非常陌生,有人能给我解释一下$#和$是如何使用的吗?在以下代码中工作

#!/bin/bash

ARGS=3         # Script requires 3 arguments.
E_BADARGS=85   # Wrong number of arguments passed to script.

if [ $# -ne "$ARGS" ]
then
  echo "Usage: `basename $0` old-pattern new-pattern filename"
  exit $E_BADARGS
fi

old_pattern=$1
new_pattern=$2

if [ -f "$3" ]
then
    file_name=$3
else
    echo "File \"$3\" does not exist."
    exit $E_BADARGS
fi

exit $? 

$#
扩展为十进制位置参数的数量

$?
扩展到最近执行的前台管道的退出状态

发件人:

$#
显示脚本参数的数量
$?
显示最后一个脚本的返回值

关于参数:
echo“ARG[$#]”
if
之前,然后执行如下脚本

script.sh 1 
输出将是

ARG[1]
Usage: g old-pattern new-pattern filename
等等

$?
的输出也可以在命令行上使用:

#shell>ls
file1.txt        g                inpu             nodes_list
#shell>echo $?
0

#shell>ls FileNameNotFound
ls: FileNameNotFound: No such file or directory
#shell> echo $?
1

在bash中存在特殊变量。。。我给你写了一些

$#-这是一个特殊变量,它包含传递给脚本的命令行数(您只需计算输入的参数数)中的内容。tis变量还表示最后一个命令行,但最好是这样${!#}

$?-这是一个非常特殊的变量,因为它表示您的脚本很好。此变量保持previosly命令的退出状态。。。这有点令人困惑,但它工作得很好。。。当您结束脚本时,您可以将此变量定位在末尾,如果她返回0值,则scrip is perfect为true,如果她返回1或其他值,则必须检查行

#shell>ls
file1.txt        g                inpu             nodes_list
#shell>echo $?
0

#shell>ls FileNameNotFound
ls: FileNameNotFound: No such file or directory
#shell> echo $?
1