Abi*_*mal 5 command-line bash scripts
这是我的脚本:
#!/bin/bash
hd='pwd'
cd $hd
Run Code Online (Sandbox Code Playgroud)
当我尝试运行它时,它失败了:
line 3: cd: $'pwd\r\r': No such file or directory
Run Code Online (Sandbox Code Playgroud)
到底是怎么回事?
ter*_*don 10
该\r问题表明您已在 Windows 计算机上编辑了脚本文件。Windows\r\n用作行终止符,而 Linux(和大多数其他操作系统)\n单独使用。当您在 Windows 中编辑文件时,Windows 将添加\r到行尾,这会破坏您的脚本。
所以,首先删除\r:
sed -i 's/\r//g' script.sh
Run Code Online (Sandbox Code Playgroud)
下一个问题是您的脚本没有按照您的想法运行。或者我想象的你认为是什么,因为你实际上并没有说。我猜你认为hd='pwd'将变量设置$hd为命令返回的值pwd。这不是正在发生的事情。您只需将变量设置为字符串 pwd:
$ hd='pwd'
$ echo "$hd"
pwd
Run Code Online (Sandbox Code Playgroud)
要将命令的输出用作变量的值,您需要使用var=$(command)或var=`command`:
$ hd=$(pwd)
$ echo $hd
/home/terdon
Run Code Online (Sandbox Code Playgroud)
所以你的脚本应该是:
#!/bin/bash
hd=$(pwd)
cd "$hd"
Run Code Online (Sandbox Code Playgroud)
但是,在这种情况下,您甚至不需要它。当前目录已经在一个变量中:
$ echo "$PWD"
/home/terdon
Run Code Online (Sandbox Code Playgroud)
所以你也可以这样做hd=$PWD。或者干脆cd "$PWD"。
| 归档时间: |
|
| 查看次数: |
4794 次 |
| 最近记录: |