我运行
php --version | grep -m1 -i php
/usr/bin/php --version | grep -m1 -i php
python3 --version | grep python
python --version | grep python
node --version | grep node
npm --version | grep npm
composer --version | grep composer
pip3 --version | grep pip
ruby --version | grep ruby
bower --version | grep bower
gulp --version | grep gulp
brew --version
redis-server --version | grep redis
redis-cli --version | grep redis
我明白了,这并不能在所有行中运行
➜ Desktop bash versions.sh
PHP 7.3.8 (cli) (built: Aug 6 2019 23:17:07) ( NTS )
PHP 5.6.30 (cli) (built: Oct 29 2017 20:30:32)
Python 2.7.10
pip 19.1.1 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin16]
Homebrew 2.1.11
Homebrew/homebrew-core (git revision 15f5d; last commit 2019-09-11)
Homebrew/homebrew-cask (git revision 0960b; last commit 2019-09-11)
redis-cli 5.0.5
➜ Desktop
答案 0 :(得分:2)
您可以使用read
代替xargs
循环:
<yourfile.txt xargs -n 1 sh -c '"$0" --version 2>&1 | grep "$0"'
<yourfile.txt xargs
:一次将yourfile.txt
的内容作为一个参数分配给以下命令。-n 1
:一次争论一个。sh -c
:该命令是一个sh
shell,其中-c
执行一个内联脚本。'"$0" --version 2>&1 | grep "$0"'
:内嵌shell脚本:
"$0" --version
:执行xargs
从文件中提供的参数值作为命令名称。2>&1
:将stderr
重定向到stdout
以处理将其版本打印到stderr
的命令。| grep "$0"
:通过管道传递到grep并以文本形式搜索参数值。答案 1 :(得分:1)
应该可以:
while read -r LINE
do
$LINE
done < your_file_name_here
例如,您可能要检查所有输出是否都到达STDOUT
,python2 --version
和python3 --version
,例如,它们在那里表现出不同的行为。
编辑1:正如Bayou指出的那样,使用done << your_file_name_here
(进行相应调整)更有效。
编辑2:正如本杰明指出的,它应该是<
而不是<<
,后者对于HEREDOC很有用。
答案 2 :(得分:0)
这可能不是我所提问题的直接答案,但仍然可以发布
我发现了自己的错误,但我并没有特别做错任何事情。除非我错过了-m1 i
,它从输出中获取第一行,且不区分大小写。
我做了以下工作,并且工作正常。我可以使用bash versions.sh
运行它。感谢所有人为我指出正确的方向。
echo -n "php: "; php --version | grep -m1 -i php
echo -n "php56: "; /usr/bin/php --version | grep -m1 -i php
echo -n "python3: ";python3 --version | grep -m1 -i python
echo -n "python: "; python --version | grep -m1 -i python
echo -n "node: ";node --version
echo -n "npm: ";npm --version
echo -n "composer: ";composer --version | grep -m1 -i composer
echo -n "pip3: ";pip3 --version | grep -m1 -i pip
echo -n "ruby: ";ruby --version | grep -m1 -i ruby
echo -n "bower: "; bower --version
echo -n "gulp: ";gulp --version
echo -n "brew: ";brew --version | grep -m1 -i brew
echo -n "redis-server: ";redis-server --version | grep -m1 -i redis
echo -n "redis-cli: ";redis-cli --version | grep -m1 -i redis
echo -n "laravel: ";laravel --version
echo -n "vapor: "; vapor --version
echo -n "valet: "; valet --version