我试图创建一个bourne shell脚本,它将采用0个或更多的arugments并打印出最后一个arugment,我用它来编写Java和im,因此很困惑,慢慢开始学习C.Bourne Shell脚本打印出最后一个参数
回答
lastArg=`echo [email protected] | awk '{print $NF}'`
#!/ bin/sh 读取参数 echo“Enter args:$ args” set $ args lastArg ='echo $ @ | awk'{print $ NF}'' echo $ lastArg' – BeagleBoy360
@ BeagleBoy360 - 这个评论是否说明你明白了?还是你在纠正某些问题? – jdi
在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];
[...]
}
#!/ bin/sh 阅读参数 echo“Enter args:$ args” last_arg ='echo $ * | rev | cut -d“”-f1 | rev'; echo $ last_arg – BeagleBoy360
这里是一个简短的Bash脚本,它会这样做:
#!/usr/bin/env bash
echo "${!#}"
虽然这不是Bourne shell脚本。使用read
命令不会从键盘读取参数。相反,它们是在运行脚本时在命令行中提供的。例如,如果你把这个文本script.sh
和运行./script.sh a b c d e
将打印:
e
我应该注意到,有一点这个问题被标记为“bash”。 –
的替代@迈克尔的解决方案:
#!/usr/bin/env bash
echo "${@: -1}"
[email protected]
与所有参数数组。:
用于正常拆分字符串(您可以使用echo "${USER: -1}"
来验证它是否打印出用户名的最后一个字符),但也可以用于阵列以获取最后的元素。需要- 大括号的数组索引工作
- 的报价仅仅是很好的做法,使代码的情况下,更为灵活的你想在其他变量混合,或者需要在一份声明中使用的值这需要一个空的字符串,而不是在没有任何参数(例如
if [ "${@: -1}" = "--help" ]
)
的情况下,这应该工作:
eval lastarg='$'$#
echo last arg is $lastarg
这适用于/bin/sh
是bash
或dash
。
我无法用“真实”/bin/sh
进行测试,无论那是什么。
- 1. Bourne shell脚本
- 2. Bourne Shell脚本中的“参数太少”
- 3. 了解bourne shell脚本
- 4. Bourne Shell脚本问题
- 5. 运行Bourne shell脚本
- 6. shell脚本打印出“读取:缺少参数”
- 7. 获取传递给shell脚本的最后一个参数
- 8. Bourne shell版本
- 9. 打印文件 - Shell脚本
- 10. CGI脚本,打印出一个传入的参数
- 11. 如何获取最后一个参数并在shell脚本中的最后一个参数之前停止?
- 12. Shell脚本打印下一行
- 13. 从shell脚本打印xml版本
- 14. 打印两个变量输出使用shell脚本
- 15. 打印输出到shell脚本2个独立的列
- 16. 意外的bourne shell脚本语句输出
- 17. 调用另一个脚本后退出循环的Shell脚本
- 18. Shell脚本在上次执行后修改后打印文件?
- 19. Shell脚本检查一个脚本输出,然后运行第二个脚本
- 20. 数组,并列出了Bourne Shell中
- 21. Shell脚本以表格格式打印
- 22. Shell脚本打印元素列表
- 23. 如何打印在shell脚本
- 24. 庆典打印定脚本参数
- 25. 传递后台打印文件的名称从一个shell脚本
- 26. R:执行脚本n次,仅打印最后一个请求的函数
- 27. shell脚本的输出是另一个shell脚本
- 28. bash脚本打印输出
- 29. bourne shell小写
- 30. 用于在多台打印机中打印的Shell脚本
“Bourne shell”(根据标题)或“Bourne Again Shell(bash)”(根据标签)? – Johnsyweb
如果传递0个参数,如何打印最后一个参数? –
它应该不会返回任何内容。 – BeagleBoy360