如果我输入以下两个命令:
i=1
var$i=2014
我收到一条错误消息var1=2014: command not found。
我已经发现了如何在 SO post中使用declare来实现动态变量名,但我仍然想知道为什么会生成这个错误消息。这意味着bash将var1=2014视为命令/可执行文件的名称,而不是赋值,并且if this line is an assignment测试发生在$i扩展之前。
问题:
bash解析输入行w.r.t的顺序是什么。任务?
任何推荐的读物也是值得感谢的。
我从https://unix.stackexchange.com/a/175845/674上读到一条命令
为什么
$ bash -c 'for f do echo "$f";done' bash a b c
a
b
c
输出与
$ bash -c 'for f in "$@"; do echo "$f";done' bash a b c
a
b
c
?
为什么for-循环不要求显式指定
循环变量的一组值,如in "$@"和
;?
谢谢。
我问题的题目有点模糊。现在让我清楚地解释一下。
我们知道bash中有一个"MAILCHECK“,每隔几分钟bash就会检查邮箱,如果您有新邮件,就会给您一条消息。请注意,此通知不需要命令。如果有新邮件,任何时候都可以自动打印邮件。
在这里,我有几个问题:
在我的zsh中没有这样的通知(也许我忘记了我的.zshrc中的一些东西)
如何更改bash/zsh中的“新邮件通知”格式
在bash/zsh中完成我的任何命令之后,如何执行a certain command。例如,当我键入ls和<enter>时,ls将被执行,然后the certain command将被执行。
我有以下CSV文件,名为test.csv
First Line, 100
Second Line, 200
Third Line, 300
Fourth Line, 400
我希望在逗号处拆分每一行,并使用awk将第一部分存储在bash脚本中的数组中。我做了以下工作:
#!/bin/bash
declare -a MY_ARRAY
MY_ARRAY=$(awk -F ',' '{print $1}' test.csv)
echo 'Start'
for ENTRY in ${MY_ARRAY}
do
echo ${ENTRY}
done
ech
有人能解释一下为什么下面这些不管用吗?
列表
the letter is d
the number is 4
the number is 2
the letter is g
script.sh
#!/bin/bash
cat "$1" | grep letter | array=($(awk '{print $4}'))
for i in "${array[@]}"
do
:
echo $i
done
如果我运行这个bash script.sh list,我希望数组打印d和g,但它没有,我认为这是因为我试图设置数组。
在Mac上,我很难在Bash3.2上完成命令输出。我有一个输出多行字符串的命令。字符串的每一行在值中都有空格。
我希望将每个值赋给数组变量的一个元素。
我有以下脚本:
declare -a sublist;
sublist=`azure account list --json | jsawk 'return this.name' -a 'return this.join("\n")'`;
echo ${sublist[0]};
azure命令的输出是:
Visual Studio Ultimate with MSDN
Microsoft Part
我在多篇文章中看到,类似UNIX的shell中的分号(;)等于一条新行。
然而,以下是混淆我和我没有运气谷歌它也。
我猜这是do在shell中的一个问题,但是"bash“并不是谷歌最友好的搜索词组合。
下面是一个简单的for语句。
for i in {1..10}
do
echo "hi"
echo "bye"
done
正如许多堆栈溢出大师所发布的,每个新行都可以用分号替换。
所以..。下面是“同样”的声明。
for i in {1..10}; do; echo "hi"; echo "bye"; done
我们得到:
在将命令行的值分配给数组时,bash脚本有一个小问题。例如,如果我键入$./test.sh aa bb cc,我希望将这些值赋值给数组,例如
test[0]=aa
test[1]=bb
test[2]=cc
而且它应该是无限的,它必须根据用户的输入创建数组。
这是我的密码
谢谢
#!/usr/bin/bash
count2=1
declare -a mvne $count2
while [ $# -gt $count2 ]
do
mvne[$count2]=$"[$count2]" <---here is the problem, how do i assign the
我希望使用file.txt的内容作为bash命令的一部分。假设bash命令及其要执行的选项是:
my_command -a first value --b_long_version_option="second value" -c third_value
但是前两个选项(-a和-b_long_version_option)非常冗长,所以我没有直接插入命令行(或bash脚本),而是在一个file.txt中编写了它们,如下所示:
-a初值\
-b_long_version_option=“第二个值”
现在,我希望用以下语法调用命令"my_command“(其中"
如果这个问题已经被回答了,我很抱歉,但如果是的话,我就找不到合适的搜索词。
我试图为find命令动态定义搜索术语(基于用户定义的设置):
# reading user settings results in array of filename patterns to delete:
patterns=("*.url" "*.html")
for i in ${patterns[@]}; do
find . -iname $i -delete
done
如果我echo命令,则得到的字符串看起来是正确的。
find . -iname "*.url