使用 ls -i 阅读问题

使用 ls -i 阅读问题

如果我写:

ls -i '/home/user/Desktop/file' | awk '{print $1}'

我得到指定文件的索引节点号。

我想制作一个脚本来返回某个文件的索引节点号。

如果我做:

read file
'/home/user/Desktop/file2'

进而:

ls -i "$file" | awk '{print $1}'

它返回的是ls cannot find '/home/user/Desktop/file2'.

为什么?谢谢

答案1

在 中ls -i '/home/user/Desktop/file',shell/home/user/Desktop/file在将其传递给 之前删除周围的引号lsls获取/home/user/Desktop/file作为参数。

当您输入 时'/home/user/Desktop/file2'read file这些引号将保留在变量中。然后,在 中ls "$file",bash 扩展变量,并删除不是变量扩展结果的引号(因此"..."命令中最初存在 ,而不是'...'变量内容中的 )。lsgets'/home/user/Desktop/file2'作为参数,当然,没有这样的文件。

您不需要在变量中另外添加引号。如果您想使用 更安全地输入文件名(包括空格和反斜杠等)read,请使用相反:

IFS= read -r file

作为输入:

/home/user/Desktop/file2

相关内容