没有使用变量获取 grep

没有使用变量获取 grep

我正在为 echo 命令分配一个变量,该变量会生成一个随机数。

例如:n=$(echo $(( (RANDOM%6) +1)).我必须在/etc/passwd.

所以,我的语法如下:

n=$(echo $(( (RANDOM%6) +1)) | grep "$n" /etc/passwd

但我得到整个文件内容(/etc/passwd)作为输出。不知道语法错在哪里。

重要的是我只在一行中获得输出。

答案1

我注意到您分隔了两个按顺序运行的命令,并且不使用管道而不是分号共享 Io。尝试

n=$(echo $(( (RANDOM%6) +1)) ; grep "$n" /etc/passwd

答案2

例如:n=$(echo $(( (RANDOM%6) +1)).我必须在/etc/passwd.

那么您正在尝试打印/etc/passwd包含从 1 到 6 的随机数的所有行?

这难道不是(假设bashorzshkshfor $RANDOM,基本 POSIX shell 就是这么做的)不是支持):

grep $((RANDOM%6+1)) /etc/passwd

如果您在其他地方需要该随机数:

n=$((RANDOM%6+1))
grep $n /etc/passwd

我认为这不是您想要做的,但您过于简化了您的问题并失去了意图。

相关内容