相关疑难解决方法(0)

从管道中将值读入shell变量

我试图让bash处理来自stdin的数据,但是没有运气.我的意思是以下工作:

echo "hello world" | test=($(< /dev/stdin)); echo test=$test
test=

echo "hello world" | read test; echo test=$test
test=

echo "hello world" | test=`cat`; echo test=$test
test=
Run Code Online (Sandbox Code Playgroud)

我想要输出的地方test=hello world.我试过把""引号括起来"$test"也不起作用.

linux bash pipe

193
推荐指数
12
解决办法
30万
查看次数

如何将输出重定向到shell中的变量?

我有这样的剧本

genhash --use-ssl -s $IP -p 443 --url $URL | grep MD5 | grep -c $MD5
Run Code Online (Sandbox Code Playgroud)

我想在变量中获取genhash生成的流.如何将其重定向到变量$hash以在条件内进行比较?

if [ $hash -ne 0 ]
  then echo KO
  exit 0
else echo -n OK
  exit 0
fi
Run Code Online (Sandbox Code Playgroud)

bash shell

186
推荐指数
6
解决办法
28万
查看次数

如何将输入传递给Bash while循环并在循环结束后保留​​变量

Bash允许使用: cat <(echo "$FILECONTENT")

Bash还允许使用: while read i; do echo $i; done </etc/passwd

结合前两个可以使用: echo $FILECONTENT | while read i; do echo $i; done

最后一个问题是它创建了子shell,而在while循环结束后,变量i不再被访问.

我的问题是:

如何实现这样的目标:while read i; do echo $i; done <(echo "$FILECONTENT")或者换句话说:我怎样才能确定i循环中存活?

请注意我知道封闭while语句{}但这并不能解决问题(想象一下你想在函数中使用while循环并返回i变量)

bash stdin pipe while-loop

80
推荐指数
2
解决办法
8万
查看次数

使用 xargs 参数两次

我需要检查本地文件是否与远程主机文件相同。

文件位置如下: File1 at Local machine ./remotehostname/home/a/b/scripts/xyz.cpp

远程计算机上的 File2 远程主机名:/home/a/b/scripts/xyz.cpp

我打算使用命令比较这两个文件

diff  ./remotehostname/home/a/b/scripts/xyz.cpp remotehostname:/home/a/b/scripts/xyz.cpp


 find . -type f | grep -v .svn |xargs -I % diff % 
Run Code Online (Sandbox Code Playgroud)

我需要更改 % 以获取远程主机并比较文件。不知道如何在 % 上应用 sed。或者有没有更好的方法来比较这些文件。

一种方法可能是保存文件列表,然后在该文件上应用 sed,但我认为应该有更好的方法。此外,差异在远程主机上不起作用,也许我需要使用干 rsync 的输出?

sed remote-access xargs

1
推荐指数
1
解决办法
2299
查看次数

标签 统计

bash ×3

pipe ×2

linux ×1

remote-access ×1

sed ×1

shell ×1

stdin ×1

while-loop ×1

xargs ×1