我有这个string存储在一个variables: IN="bla@some.com;john@home.com" 现在我想分割string; 定界符,使我有: ADDR1="bla@some.com" ADDR2="john@home.com" 我不一定需要ADDR1和ADDR2variables。 如果它们是一个更好的数组的元素。 经过下面答案的build议后,我得到了以下的结果: #!/usr/bin/env bash IN="bla@some.com;john@home.com" mails=$(echo $IN | tr ";" "\n") for addr in $mails do echo "> [$addr]" done 输出: > [bla@some.com] > [john@home.com] 有一个涉及设置Internal_field_separator (IFS)的解决scheme; 。 我不确定这个答案是怎么回事,你如何将IFS重置为默认? RE: IFS解决scheme,我试过这个,它工作,我保留旧的IFS ,然后恢复它: IN="bla@some.com;john@home.com" OIFS=$IFS IFS=';' mails2=$IN for x in $mails2 do echo "> [$x]" done IFS=$OIFS 顺便说一句,当我尝试 mails2=($IN) […]
我试图parsing从curl请求返回的JSON,如下所示: curl 'http://twitter.com/users/username.json' | sed -e 's/[{}]/''/g' | awk -vk="text" '{n=split($0,a,","); for (i=1; i<=n; i++) print a[i]}' 上面的代码将JSON分成了几个字段,例如: % … "geo_enabled":false "friends_count":245 "profile_text_color":"000000" "status":"in_reply_to_screen_name":null "source":"web" "truncated":false "text":"My status" "favorited":false % … 如何打印特定字段(用-vk=text )?
我有这个脚本叫做test.sh: #!/bin/bash STR = "Hello World" echo $STR 当我运行sh test.sh我得到这个: test.sh: line 2: STR: command not found 我究竟做错了什么? 我在网上看到极其基本的/初学者的bash脚本教程,这就是他们如何声明variables…所以我不知道我在做什么错了。 我在Ubuntu服务器9.10。 是的,bash位于/bin/bash 。
在OSX中修改环境variables(如PATH)的正确方法是什么? 我看了一下Google,find了3个不同的文件来编辑: 的/ etc /path 〜/ .profile文件 〜/ .tcshrc文件 我甚至没有这些文件,我很确定.tcshrc是错误的,因为OSX现在使用bash。 任何人都知道这些variables,特别是PATH的定义? 编辑:我正在运行OS X 10.5
我发现了一些将外部variables传递给awk脚本的方法,但是我对'和"感到困惑。 首先,我尝试了一个shell脚本: $ v=123test $ echo $v 123test $ echo "$v" 123test 然后尝试awk: $ awk 'BEGIN{print "'$v'"}' $ 123test $ awk 'BEGIN{print '"$v"'}' $ 123 为什么区别? 最后我尝试了这个: $ awk 'BEGIN{print " '$v' "}' $ 123test $ awk 'BEGIN{print ' "$v" '}' awk: cmd. line:1: BEGIN{print awk: cmd. line:1: ^ unexpected newline or end of string […]
我试图写一个使用if语句的Bash脚本。 if [$CHOICE -eq 1]; 脚本给了我错误,直到我在[之前]之后给出空格,如下所示: if [ $CHOICE -eq 1 ]; 我的问题是,为什么方括号中的空格在Bash中如此重要?
有人可以告诉我是否应该在shell脚本中引用variables吗? 例如,以下是正确的: xdg-open $URL [ $? -eq 2 ] 要么 xdg-open "$URL" [ "$?" -eq "2" ] 如果是这样,为什么?
我正在为涉及使用Bash的工作进行简单的脚本编写项目。 我有一个非常简单的脚本,如下所示: #!/bin/bash VAR1="$1" VAR2="$2" MOREF='sudo run command against $VAR1 | grep name | cut -c7-' echo $MOREF 当我从命令行运行这个脚本并传递它的参数,我没有得到任何输出。 但是,当我运行$MOREFvariables中包含的命令时,我能够得到输出。 我想知道如何将一个需要在脚本中运行的命令的结果保存到一个variables,然后在屏幕上输出该variables?
如何获取Bash脚本所在目录的path, 在该脚本中? 例如,假设我想使用Bash脚本作为另一个应用程序的启动器。 我想将工作目录更改为Bash脚本所在的目录,所以我可以对该目录中的文件进行操作,如下所示: $ ./application
在Bash中,单引号( '' )和双引号( "" )之间有什么区别?