我有以下脚本。这是一个简单的测试用例,其中a
是任何字符串值并且b
应该是路径。
#!/bin/bash
alias jo "\
echo "please enter values "\
read a \
read -e b \
echo "My values are $a and $b""
但是,每当我尝试执行 ./sample.sh 时,都会出现以下错误:
./sample.sh: line 3: alias: jo: not found
./sample.sh: line 3: alias: echo please: not found
./sample.sh: line 3: alias: enter: not found
./sample.sh: line 3: alias: values: not found
./sample.sh: line 3: alias: read a read -e b echo My: not found
./sample.sh: line 3: alias: values: not found
./sample.sh: line 3: alias: are: not found
./sample.sh: line 3: alias: and: not found
./sample.sh: line 3: alias: : not found
当我尝试时,source sample.sh
我得到以下信息:
a: Undefined variable.
我的目标是使其成为别名,以便我可以获取此脚本并运行别名来执行命令行。有人可以看看这个并让我知道错误是什么吗?
你在这里有几个问题
不像 in
csh
, in (和其他类似 Bourne 的 shell),别名是用一个符号bash
分配的,例如=
alias foo=bar
引号不能这样嵌套;在这种情况下,您可以在别名周围使用单引号并在内部使用双引号
反斜杠
\
是一个续行字符:从语法上讲,它使您的命令变成一行(与您想要的相反)所以
测试:首先我们获取文件:
然后
如果您想在脚本中使用别名,请记住别名仅在交互式 shell 中默认启用:要在脚本中启用它们,您需要添加
不管上面的一切,你应该考虑使用 shell 函数而不是这样的东西的别名
习惯在 POSIX 类型的 shell 中使用函数。您没有任何引用问题: