Questions tagged «shell-script»

有关shell脚本,由shell解释的可执行文件(bash,zsh等)的问题。

3
Shebang以`//`开头?
我对以下脚本(hello.go)感到困惑。 //usr/bin/env go run $0 $@ ; exit package main import "fmt" func main() { fmt.Printf("hello, world\n") } 它可以执行。(在MacOS X 10.9.5上) $ chmod +x hello.go $ ./hello.go hello, world 我还没有听说过Shebang开头//。当我在脚本顶部插入空白行时,它仍然有效。为什么该脚本有效?

3
了解“ IFS =读-r行”
我显然明白,可以为内部字段分隔符变量添加值。例如: $ IFS=blah $ echo "$IFS" blah $ 我也知道这read -r line会将数据从保存stdin到名为的变量line: $ read -r line <<< blah $ echo "$line" blah $ 但是,命令如何分配变量值?它是否首先存储数据from stdin到变量line,然后给出lineto的值IFS?

12
为什么要在函数中编写整个bash脚本?
在工作中,我经常编写bash脚本。我的主管建议将整个脚本分解为功能,类似于以下示例: #!/bin/bash # Configure variables declare_variables() { noun=geese count=three } # Announce something i_am_foo() { echo "I am foo" sleep 0.5 echo "hear me roar!" } # Tell a joke walk_into_bar() { echo "So these ${count} ${noun} walk into a bar..." } # Emulate a pendulum clock for a bit …

6
ls -l和ll之间的区别?
我对整体编程还是比较陌生,一些教程告诉我使用它ls -l来查看目录中的文件,而其他则一直在说ll。我知道这ls是一个简短的列表,但是其他两个之间有区别吗?
59 shell  shell-script  ls 


4
通过符号链接执行时获取当前脚本的路径
我有一个实用程序,该实用程序由几个目录以及一些bash脚本和支持文件组成,这些文件可能会部署到多台计算机上,并且可能位于每台计算机的不同目录中。脚本需要能够引用相对于它们自己的路径,因此我需要能够获取到当前正在执行的文件的路径。 我知道dirname $0当直接调用我的脚本时,这种用法非常有效。不幸的是,人们希望能够从完全不同的目录创建指向这些脚本的符号链接,并且仍然具有相对的路径逻辑功能。 总体干线结构的示例如下: / |-usr/local/lib | |-foo | | |-bin | | | |-script.sh | | |-res | | | |-resource_file.txt |-home/mike/bin | |-link_to_script (symlink to /usr/local/lib/foo/bin/script.sh) 我怎样才能可靠地引用/usr/local/lib/foo/res/resource_file.txt来自script.sh它是否被调用/usr/local/lib/foo/bin/script.sh或~mike/bin/link_to_script?



6
如何以与pipefail类似的方式让bash在反补失败时退出?
因此,我想尽可能地加强bash脚本(并且在无法委托给Python / Ruby这样的语言时),以确保不会出错。 在这种情况下,我有一个strict.sh,其中包含如下内容: set -e set -u set -o pipefail 并以其他脚本来源。但是,尽管pipefail会加速: false | echo it kept going | true 它不会拾起: echo The output is '`false; echo something else`' 输出将是 输出为'' False返回非零状态和no-stdout。在管道中,该方法将失败,但此处未捕获该错误。当实际上是将计算结果存储在变量中以供以后使用,并且该值设置为空时,这可能会导致以后出现问题。 所以-有没有办法让bash将反引号内的非零返回码视为足以退出的原因?

10
bash:测试是否设置了$ WORD
我正在寻找中的构造bash,以确定变量$WORD是否为已定义单词之一。我需要这样的东西: if "$WORD" in dog cat horse ; then echo yes else echo no fi bash有这样的构造吗?如果没有,最接近的是什么?


6
用下划线连接两个变量
我需要连接两个变量来创建具有下划线的文件名。让我们调用变量,$FILENAME并$EXTENSION从文件中读取文件名。 FILENAME=Hello EXTENSION=WORLD.txt 现在... 我尝试了以下操作,但未成功: NAME=${FILENAME}_$EXTENSION NAME=${FILENAME}'_'$EXTENSION NAME=$FILENAME\\_$EXTENSION 我总是得到某种奇怪的输出。通常下划线优先。 我需要它 echo $NAME Hello_WORLD.txt

5
通过第一次出现的分隔符分割字符串
我有以下格式的字符串 id;some text here with possible ; inside 并希望在第一次出现时将其拆分为2个字符串;。因此,应为:id和some text here with possible ; inside 我知道如何分割字符串(例如,使用cut -d ';' -f1),但是由于我;位于左侧,因此它将分割为更多部分。

3
如何使环境变量在shell脚本中“导出”?
我有多个Amazon EC2帐户,并希望能够$EC2_HOME使用脚本快速切换变量,例如。 我有一个这样的shell脚本设置: #!/bin/sh export EC2_HOME=/home/me/.ec2 echo $EC2_HOME 当我运行脚本时,我知道EC2_HOME已经设置好了,但是我认为使用export脚本会使变量在脚本完成后继续存在。它不会,因为运行echo $EC_HOME不会显示任何内容。 我知道这一定是非常基本的Linux脚本知识,但是我不知道。我尝试寻找相关问题时没有运气-如果这是重复的话,我深表歉意。

5
如何在zsh中定义和加载自己的shell函数
我很难在zsh中定义和运行自己的shell函数。我按照官方文档中的说明进行操作,并首先尝试使用简单的示例,但未能使其正常工作。 我有一个文件夹: ~/.my_zsh_functions 在此文件夹中,我有一个functions_1具有rwx用户权限的文件。在此文件中,我定义了以下外壳函数: my_function () { echo "Hello world"; } 我定义FPATH要包含文件夹的路径~/.my_zsh_functions: export FPATH=~/.my_zsh_functions:$FPATH 我可以.my_zsh_functions使用echo $FPATH或确认文件夹位于函数路径中echo $fpath 但是,如果我从外壳尝试以下方法: > autoload my_function > my_function 我得到: zsh:my_test_function:找不到函数定义文件 我还能做些什么才能打电话my_function? 更新: 到目前为止的答案建议使用zsh函数采购文件。这是有道理的,但我有点困惑。zsh不应该知道这些文件在哪里FPATH吗?那么目的是autoload什么?
54 shell-script  zsh 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.