我正在为 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 的随机数的所有行?
这难道不是(假设bash
orzsh
或ksh
for $RANDOM
,基本 POSIX shell 就是这么做的)不是支持):
grep $((RANDOM%6+1)) /etc/passwd
如果您在其他地方需要该随机数:
n=$((RANDOM%6+1))
grep $n /etc/passwd
我认为这不是您想要做的,但您过于简化了您的问题并失去了意图。