【发布时间】:2018-04-14 10:51:24
【问题描述】:
我想设置一个指示目录的变量,并使用它来访问该目录中的文件。
所以我写了一个简单的脚本(注意我没有把#!/bin/csh放在前面)
文件测试:
set dir1=/tmp
ls -l $dir1
我执行了chmod +x test 并运行了test,但它只显示了我当前的目录,例如 $dir1 只是空的。我尝试使用 {XX} 无济于事。
我想在不使用 #!/usr/bin/env tcsh 或 #!/bin/csch 或 #!/bin/tcsh 的情况下执行此操作。这是不可能的吗? (我不想启动一个新的 shell,但使用相同的别名和其他以前的环境变量等)
怎么了?我在 tcsh 中这样做。
添加
后来发现
dir1=/tmp
ls $dir1
就是答案。
【问题讨论】:
-
linux 中的'set' 命令与 Windows 不同!
-
ls命令不是您的 shell 内置的。dir命令也没有内置到您的 shell 中。如果您的问题是关于 csh 变量设置和扩展,那么将ls更改为dir并不是真正的答案的一部分……跳过 shebang 并不能避免运行新的 shell。在 csh/tcsh 中的 shell 中执行内联命令的方法是使用source命令。 -
另外,为什么这个问题被标记为 bash?
-
@ghoti 如果我想给它一些论据怎么办? (我想将它与 $1 $2.. 一起使用)使用
source我不能给出论据,可以吗? -
@ChanKim - 如果你想给一个脚本参数,你就是在暗示一个新的 shell 来运行那个脚本。听起来您真正想要的是 tcsh 中的
alias(或 POSIX shell 或 bash 中的function)。