/ bin / bash -c与直接执行命令有什么不同?
发布时间:2020-12-15 21:18:04 所属栏目:安全 来源:网络整理
导读:我很好奇为什么这个命令: for f in `/bin/ls /mydir | sort | tail -n 10`; do echo $f; done; 输出/ mydir中的最后十个文件,但是 /bin/bash -c "for f in `/bin/ls /mydir | sort | tail -n 10`; do echo $f; done;" 输出“意外令牌附近的语法错误”[文件
我很好奇为什么这个命令:
for f in `/bin/ls /mydir | sort | tail -n 10`; do echo $f; done; 输出/ mydir中的最后十个文件,但是 /bin/bash -c "for f in `/bin/ls /mydir | sort | tail -n 10`; do echo $f; done;" 输出“意外令牌附近的语法错误”[文件在/ mydir]’“ 解决方法
您正在使用双引号,因此父shell在将参数传递给/ bin / bash之前插入反引号和变量.
因此,您的/ bin / bash正在接收以下参数: -c "for f in x y z ... ; do echo ; done;" 这是一个语法错误. 要避免这种情况,请使用单引号传递您的参数: /bin/bash -c 'for f in `/bin/ls /mydir | sort | tail -n 10`; do echo $f; done;' (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |