比如下面的脚本片段: #!/bin/bash ARGS=3# 这个脚本需要3个参数. E_BADARGS=65# 传递给脚本的参数个数不对.echo"Args number is : $#"echo$0if[ $# -ne"$ARGS"] # 测试脚本的参数个数。thenecho"Usage: $(basename $0) first-parameter second-parameter third-parameter"exit $E_BADARGSfi# 开始...
s) ENABLE_EMAIL=1; EMAIL_CONF="$OPTARG";; h) usage "`basename $0`";; ?) usage "`basename $0`" 1;; esac done # Check the input if [[ -z "${JOBS_FILE}" ]]; then echo -e "\e[31mError: No -i special\e[0m" 1>&2 usage "`basename $0`" 1 fi if [[ ! -f ${JOBS...
1.命令替换的两种形式 (1)var=`basename $0` (2)var=$(basename $0) 2.命令替换会调用一个subshell 3. (1)command `echo a b` #2args: and b (2)command "`echo a b`" #1args:"a b" (3)dir=`ls -l` echo $dir #换行消失 echo "$dir" # 4. var1=`<file1` var2=`cat file2` #...
Bash变量使用“$0”标示脚本的路径。不必是全路径名,但是它定义了执行脚本所在的路径。 $ printf “%s\n” “$0” /bin/bash 1. 2. 在这个例子中,Bash会和开始命令/bin/bash。 当参数命令组合了basename命令时,只留下脚本的名字,其余的路径部分被删除了。 一些微缩版本使用Bash的字符串替换功能来避免执行外面...
因此,可以通过比较$0和call脚本的名称来判断当前脚本是否从call脚本调用。以下是一个示例代码: 代码语言:txt 复制 #!/bin/bash # 定义call脚本的名称 call_script="call.sh" # 获取当前脚本的名称 current_script=$(basename "$0") # 判断当前脚本是否从call脚本调用 if [ "$current_script" = "$call...
很明显,得出的结果不是我们要的,我们只要输出1.2test这个结果。它所传递的变量$0的字符串是程序的完整路径,而不是名称,这里我们可以通过basename命令实现只返回程序名称,把脚本修改成如下: [root@wzp ~]# cat 1.2test #!/bin/bash name=`basename $0` ...
本文列举BASH Shell的一些编程规范,旨在提高代码可读性和健壮性。 不可改变的全局变量 尽量少用全局变量 以大写命名 只读声明 用全局变量来代替隐晦的$0,$1等 代码如下: #以大写命名只读全局变量,并使用只读声明 readonly PROGNAME=$(basename $0) #将隐晦的参数转变为容易理解的变量 ...
prog=`basename $0` ; # Decide if we are listing files or directories. case $prog in lsf | lsf.sh) type=f opts=""; ;; lsd | lsd.sh) type=d # The -d switch to "ls" is presumed when listing directories. opts="-d";
echo "script usage: $(basename $0) [-l] [-h] [-a somevalue]" >&2 exit 1 ;; esac done shift "$(($OPTIND - 1))" 上面例子中,while循环不断执行getopts 'lha:' OPTION命令,每次执行就会读取一个连词线参数(以及对应的参数值),然后进入循环体。变量OPTION保存的是,当前处理的那一个连词线参数...
另外,可以根据第一种方法结合使用 realpath 命令,也可获取脚本所在目录的绝对路径: 代码语言:javascript 复制 #!/usr/bin/env bashecho"The script you are running has:"echo"basename: [$(basename "$0")]"echo"dirname : [$(dirname $(realpath "$0") )]" 参考: stackoverflow question 59895...