Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用read-in-bash只将一个确定的字母分配给变量?_Bash - Fatal编程技术网

如何使用read-in-bash只将一个确定的字母分配给变量?

如何使用read-in-bash只将一个确定的字母分配给变量?,bash,Bash,我想从终端读取数据,并准确存储1个字母。 我的方法x=$(read-dx)无效且为空。read将输出变量作为参数。尝试以下方法: read x && echo ${x:0:1} 上面从命令行读取输入,然后获取第一个字符并进行回显。感谢anubhava、kvantour和Charls Duffy的回答和评论,特别是关于子shell的提示。至少read-rn 1x按我的要求工作。使用read-rn 1x是否-n1使-r在这里冗余?x=$(read-rn 1x)仍然是空的。@john

我想从终端读取数据,并准确存储1个字母。
我的方法
x=$(read-dx)
无效且为空。

read将输出变量作为参数。尝试以下方法:

read x && echo ${x:0:1}

上面从命令行读取输入,然后获取第一个字符并进行回显。

感谢anubhava、kvantour和Charls Duffy的回答和评论,特别是关于子shell的提示。至少
read-rn 1x
按我的要求工作。

使用
read-rn 1x
是否
-n1
使
-r
在这里冗余?
x=$(read-rn 1x)
仍然是空的。@johngofy避免
x=$(…)
。只要执行
read-rn 1 x
当您运行
x=$(read-rx)
时,您将启动一个新的子shell,从stdin读取并在子进程内设置
x
变量。。。然后,在父shell中,将子shell写入stdout的所有内容分配给父shell中的
x
。。。除了您的子shell根本没有向stdout写入任何内容,所以您分配的总是空的!