我试图创建一个bourne shell脚本,它将占用0个或更多的arugments并打印出最后一个arugment,我用来编写Java而我很困惑,慢慢开始学习C。
答案 0 :(得分:3)
@ Michael解决方案的替代方案:
#!/usr/bin/env bash
echo "${@: -1}"
$@
是包含所有参数的数组。:
用于正常拆分字符串(您可以使用echo "${USER: -1}"
来验证它是否打印了您的用户名的最后一个字符),但也可以用于数组以获取最后一个字符串元素 if [ "${@: -1}" = "--help" ]
)答案 1 :(得分:2)
lastArg=`echo $@ | awk '{print $NF}'`
答案 2 :(得分:2)
以下是一个简短的Bash脚本:
#!/usr/bin/env bash
echo "${!#}"
但这不是Bourne shell脚本。使用read
命令不会从键盘读取Args。相反,它们在运行脚本时在命令行上提供。例如,如果您将此文本放在script.sh
并运行./script.sh a b c d e
,则会打印:
e
答案 3 :(得分:0)
在bash中:
last_arg=`echo $* | rev | cut -d " " -f1 | rev`;
echo $last_arg
你的问题提到C.在C中它更容易:
int main (int argc, char *argv[]) {
char *last_arg = argv[argc - 1];
[...]
}
答案 4 :(得分:0)
这应该有效:
eval lastarg='$'$#
echo last arg is $lastarg
这适用于/bin/sh
bash
或dash
。
我无法用“真实的”/bin/sh
来测试它,无论那是什么。