如何将指定文件的每行内容通过管道传递给shell命令执行?
实现方法
方案1:命令替换直接批量安装(最简洁)
直接通过$()读取文件所有内容作为snap install的参数,执行一次命令完成全部安装:
snap install --classic $(cat req.txt)
这个命令实际等价于执行snap install --classic code heroku postman,完全符合你的需求。
如果需要过滤文件中的空行,可以调整为:
snap install --classic $(grep -v '^$' req.txt)
方案2:xargs逐行处理(兼容性更好)
如果你的req.txt中存在带空格、特殊字符的行,或者需要逐个确认安装状态,用xargs的替换模式逐行执行安装:
xargs -I {} snap install {} --classic < req.txt
参数说明:-I {} 表示将输入的每一行内容,替换到后续命令中{}的位置,逐行触发snap install执行。
如果需要过滤空行,可以调整为:
grep -v '^$' req.txt | xargs -I {} snap install {} --classic
注意事项
- 若部分安装包不需要
--classic参数,你需要拆分req.txt,区分不同参数的包分别执行命令 - 如果遇到权限不足的报错,在命令前加
sudo提权即可
内容的提问来源于stack exchange,提问作者basquiatraphaeu
相关产品推荐
相关产品推荐

