Joh*_*nck 0 bash arguments shift
假设您要创建一个bash不支持任何选项但脚本不同的脚本cp,因为cp系统提供的脚本不接受多个源.
系统的用法(假设和破坏)cp是:
cp source target # target may be a directory
Run Code Online (Sandbox Code Playgroud)
脚本的用法是:
cp.sh source... target # target must be a directory
Run Code Online (Sandbox Code Playgroud)
这是脚本的起点:
#!/bin/bash
tgt="$1"
shift
for src in "$@"; do
echo cp $src $tgt
done
Run Code Online (Sandbox Code Playgroud)
当使用参数" a b c d"(注意它d是目标)运行时,它输出:
cp b a
cp c a
cp d a
Run Code Online (Sandbox Code Playgroud)
目标是修复脚本以输出它,同时保持代码简单:
cp a d
cp b d
cp c d
Run Code Online (Sandbox Code Playgroud)
/test.bash source1 source2 target1
#!/bin/bash
target=${!#}
if [ ! -d $target ] ; then
echo "$target must be a directory " >&2
exit 1;
fi
args=("$@")
unset args[${#args[@]}-1]
for src in "${args[@]}"; do
echo cp $src $target
done
Run Code Online (Sandbox Code Playgroud)
将输出
cp source1 target1
cp source2 target1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1793 次 |
| 最近记录: |