scriptlist=`ls $directory_/fallback_* 2> /dev/null`
命令2>
部分的目的究竟是什么?
我省略了它并运行命令,它运行正常。
并且,如果ls的输出存储在/ dev / null文件中,那么变量scriptlist
将包含什么。
当我执行代码时,输出在变量中,文件null
中没有任何内容。如果我们删除2
,则输出是文件而不是变量。
知道这行代码到底在做什么吗?
答案 0 :(得分:15)
文件描述符2
表示标准错误。 (其他特殊文件描述符包括标准输入的0
和标准输出的1
。
2> /dev/null
表示将标准错误重定向到/dev/null
。 /dev/null
是一种特殊设备,可以丢弃写入它的所有内容。
总而言之,这行代码将命令ls $directory_/fallback_* 2> /dev/null
的标准输出存储到变量scriptlist
中,并且标准错误被丢弃。
答案 1 :(得分:5)
scriptlist=`ls $directory_/fallback_* 2> /dev/null`
由于你已将整行ls $directory_/fallback_* 2> /dev/null
括在反引号中,
ls
命令的输出存储在scriptlist
变量中。
另外,2>
用于redirecting stderr
到/dev/null
的输出(无处)。
答案 2 :(得分:3)
知道'2'在这里做了什么
此处2
是引用STDERR
的文件描述符。
2> /dev/null
表示将STDERR
重定向到空设备/dev/null
。
您提到的完整行会存储输出,即STDOUT
(忽略STDERR
),由ls $directory_/fallback_*
返回到变量scriptlist
。