Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.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
Bash SH脚本-传递的变量(文件名)带有空格_Bash_Shell_Awk_Sh - Fatal编程技术网

Bash SH脚本-传递的变量(文件名)带有空格

Bash SH脚本-传递的变量(文件名)带有空格,bash,shell,awk,sh,Bash,Shell,Awk,Sh,老实说,我对自己有点失望,但我已经花了几个小时试图成功地找到这个。这个话题已经在很多线程中讨论过了,但我就是无法找到一个解决方案 我有一个“sh”脚本(在busybox上或使用fullbash) 在外部调用脚本并传递3个变量($1、$2、$3),其中: 我正在尝试获取文件大小(stat不可用),因此我正在尝试使用du: 伪: filesize=$(du $3 | awk '{ print $1 }') 我只是无法让脚本正确处理带有空格的文件名。 我试着引用和逃避引用都没有用。 在命令提示下,我

老实说,我对自己有点失望,但我已经花了几个小时试图成功地找到这个。这个话题已经在很多线程中讨论过了,但我就是无法找到一个解决方案

我有一个“sh”脚本(在busybox上或使用fullbash)

在外部调用脚本并传递3个变量($1、$2、$3),其中:

我正在尝试获取文件大小(stat不可用),因此我正在尝试使用du:

伪:

filesize=$(du $3 | awk '{ print $1 }')
我只是无法让脚本正确处理带有空格的文件名。 我试着引用和逃避引用都没有用。 在命令提示下,我可以插入\来处理du的空白


非常感谢您的帮助。

双引号工作是
sh

sh-3.2$ f="a b"
sh-3.2$ echo aaaa > "$f"
sh-3.2$ ls -l "a b"
-rw-r--r--  1 xxxx  xxxxx  5 May 23 xx:xx a b
sh-3.2$ du "$f"
8   a b

双引号工程是
sh

sh-3.2$ f="a b"
sh-3.2$ echo aaaa > "$f"
sh-3.2$ ls -l "a b"
-rw-r--r--  1 xxxx  xxxxx  5 May 23 xx:xx a b
sh-3.2$ du "$f"
8   a b

双引号工程是
sh

sh-3.2$ f="a b"
sh-3.2$ echo aaaa > "$f"
sh-3.2$ ls -l "a b"
-rw-r--r--  1 xxxx  xxxxx  5 May 23 xx:xx a b
sh-3.2$ du "$f"
8   a b

双引号工程是
sh

sh-3.2$ f="a b"
sh-3.2$ echo aaaa > "$f"
sh-3.2$ ls -l "a b"
-rw-r--r--  1 xxxx  xxxxx  5 May 23 xx:xx a b
sh-3.2$ du "$f"
8   a b
试一试

试一试

试一试

试一试


我非常感谢那些花时间就这个问题提出一些想法的人。经过长时间和大量努力,确定busybox实现是罪魁祸首


以上提供的所有内容都是有效的,前提是使用了更新版本的bb(或任何完整发行版)。不幸的是,我们花了大量的尝试和错误才找到原因。

我非常感谢那些花时间就这个问题提供一些想法的人。经过长时间和大量努力,确定busybox实现是罪魁祸首


以上提供的所有内容都是有效的,前提是使用了更新版本的bb(或任何完整发行版)。不幸的是,我们花了大量的尝试和错误才找到原因。

我非常感谢那些花时间就这个问题提供一些想法的人。经过长时间和大量努力,确定busybox实现是罪魁祸首


以上提供的所有内容都是有效的,前提是使用了更新版本的bb(或任何完整发行版)。不幸的是,我们花了大量的尝试和错误才找到原因。

我非常感谢那些花时间就这个问题提供一些想法的人。经过长时间和大量努力,确定busybox实现是罪魁祸首


以上提供的所有内容都是有效的,前提是使用了更新版本的bb(或任何完整发行版)。不幸的是,这需要大量的尝试和错误才能找到原因。

你如何称呼这个脚本?
du“$3”
应该可以工作。这个脚本是chmod a+x,被称为“sh script”和./script。这里所有有知识的海报似乎都同意双重引用应该可以工作。你声称它不是。唯一合理的结论是,你没有很好地解释你正在做的不起作用的事情。您删除的重要细节:您正在运行的代码(演示问题的最小工作示例)、您如何运行它(完整的命令行)以及您收到的结果/错误消息。我保证,如果你这样做,你会找到解决问题的方法,而不是继续这个没完没了的“this should work”/“it not”循环(例如,文件名在传递到脚本时没有正确引用,这意味着部分文件名在$3中,部分文件名在$4中,可能部分文件名在$5、6中,等等。)
set-x
对于准确了解脚本内部的情况非常有用。此外,请尝试运行脚本,查看是否发现任何明显的问题。如何调用脚本?
du“$3”
应该可以工作。该脚本为chmod a+x,并被称为“sh脚本”和./script。这里所有的知识渊博的海报似乎都同意双重引用应该有效。你声称不行。唯一合理的结论是,你没有充分解释清楚你正在做什么不起作用。你删除的重要细节:你正在运行的代码(一个演示问题的最小工作示例),您如何运行它(完整的命令行),以及您收到的结果/错误消息。我保证,如果您这样做,您将找到解决问题的方法,而不是继续这种没完没了的“this should work”/“it not”循环。扩展@shx2的注释:很可能还涉及到另一个问题,例如脚本调用错误(例如,文件名在传递到脚本时没有正确引用,这意味着部分文件名在$3中,部分文件名在$4中,可能部分文件名在$5、6中,等等。)
set-x
对于准确了解脚本内部的情况非常有用。此外,请尝试运行脚本,查看是否发现任何明显的问题。如何调用脚本?
du“$3”
应该可以工作。该脚本为chmod a+x,并被称为“sh脚本”和./script。这里所有的知识渊博的海报似乎都同意双重引用应该有效。你声称不行。唯一合理的结论是,你没有充分解释清楚你正在做什么不起作用。你删除的重要细节:你正在运行的代码(一个演示问题的最小工作示例),您如何运行它(完整的命令行),以及您收到的结果/错误消息。我保证,如果您这样做,您将找到解决问题的方法,而不是继续这种没完没了的“this should work”/“it not”循环。扩展@shx2的注释:很可能还涉及到另一个问题,例如脚本调用错误(例如,文件名在传递到脚本时没有正确引用,这意味着部分文件名在$3中,部分文件名在$4中,可能部分文件名在$5、6中,等等。)
set-x
对于准确了解脚本内部的情况非常有用。此外,请尝试运行脚本,看看是否发现任何明显的问题。如何调用脚本?
du“$3”
应该可以工作。脚本为chmod a+x,并被称为“sh script”和。/s