如何在Bash变量中添加带空格的路径

时间:2017-05-04 15:44:40

标签: bash terminal

如何在import java.util.Date; public class MyRunnableTask implements Runnable { private String hostName; private int port; MyRunnableTask(String _hostName, int _port){ this.hostName = _hostName; this.port = _port; } @Override public void run() { System.out.println(this.hostName + ":: I am getting executed: " + this.hashCode() + " | " + Thread.currentThread().getId() + " | " + new Date()); // implement your socket programming code here try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } } } 中的Bash变量中添加带空格的路径?我想在.bashrc中为路径存储一些变量,我遇到了一个带有空格的路径。

我尝试在.bashrc之间添加它或使用转义字符' ',但它没有帮助:

\

......当我跑步时:

games=/run/media/mohamedRadwan/games\ moves    # this doesn't work
games='/run/media/mohamedRadwan/games  moves'  # or this
games="/run/media/mohamedRadwan/games  moves"  # or this

...它会抛出一个错误,表明它只是尝试挂载mount $games

但是当我运行/run/media/mohamedRadwan/games时,它会显示完整值echo $games

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:9)

mount /dev/sda9 "$games"

如上所述,始终引用变量引用。否则,shell会将变量值中的空格混淆为分隔多个值的空格。

答案 1 :(得分:1)

当变量包含空格时,变量扩展然后分词将导致许多参数,echo命令将显示所有参数,但其他程序或函数可能以另一种方式处理参数。

带双引号的环绕变量将阻止参数被分割

printf "'%s'\n" $games

printf "'%s'\n" "$games"