我有一个脚本,它使用wget并将输出保存到一个名为递增变量的文件中。
Counter.sh:
number=1
for i in $(cat file)
do
wget $i -S -O $number.html 2>&1
((number++))
sleep 1
echo 'done'
done
我可以从命令行运行脚本,它运行得非常完美。但是,当我在另一个脚本中执行它时:
脚本2:
./counter.sh
我收到以下输出:
scripts/counter.sh: 5: scripts/counter.sh: number++: not found
d
大家好,我有这个问题,我在csh中有一个示例程序(我知道它不是最好的脚本语言,但在这里我没有选择),它是foll:
#!/bin/csh
echo 'please enter values'
read a
read -e b
echo "My values are $a and $b"
正如您可能看到的,我的第二次读取将接受一个文件输入。这是必要的,因为我的实际程序将有这一点;现在我要做的是把它转换成别名,然而,当我执行上面的脚本,我得到foll。输出
please enter values
read: Command not found
read
我使用的是一个值数组,我希望使用awk和输出来查找这些值。在awk行中,如果我用数字本身替换第一个"$i",脚本就会工作,但是当我尝试使用变量"$i"时,脚本就不再工作了。
declare -a arr=("5073770" "7577539")
for i in "${arr[@]}"
do
echo "$i"
awk -F'[;\t]' '$2 ~ "$i"{sub(/DP=/,"",$15); print $15}
我必须编写一个Bash脚本,它检查另一个Bash脚本是否包含某个命令行。由于Bash允许将命令行拆分为多行,所以在实际模式匹配之前,我的脚本必须能够合并相应的行。
如何在Bash脚本中将所有多行解析为单行命令?
示例
我想检查某个脚本是否包含ls命令,如果它包含ls命令,我想知道哪些参数被传递给ls命令。要回答这个问题,我可以用sed。但因此,我必须首先合并所有多行命令。
输入:
# My comment \
ls \
-a \
-l
输出:
# My comment \
ls -a -l
无效输出示例:
# My comment ls -a -l
我们有一个问题,我可以重新用这个简单的例子。我有以下示例shell脚本文件,名为SO-shell.txt
#!/bin/bash
export my_var="A quick bown fox"
echo my_var was set to "$my_var"
当我运行SO-shell.txt时,我得到以下输出:
my_var was set to A quick bown fox
在脚本完成执行之后,如果我在shell命令行执行以下命令:
shell> echo "$my_var"
我没有看到任何东西(即shell变量没有被分配到shel
我需要使用;作为分隔符将单行输出拆分为多行。输入由shell脚本生成,如下所示:
REVOKE ALL ON XXXXXX_ABC_AAA FROM PUBLIC ; REVOKE ALL ON XBJE_XXXXX_ABC_AAA FROM PUBLIC ; REVOKE ALL ON XBJE_XXADTXXX_ABC_AAA FROM PUBLIC ; REVOKE ALL ON XBJE_XXVXXX_ABECC_AAA FROM PUBLIC ;
我需要把这个分割成这样的多行:
REVOKE ALL ON XXXXXX_ABC_AAA FROM PUBLIC ;
REVOKE ALL
我有一个shell命令,它输出多行。我希望将其存储在makefile中的一个变量中,以便稍后在目标中进行处理。
一个简化的例子:
我有一个名为zfile1的文件
#zfile1
some text
$echo 123
more text
$$$#&^$
more text
makefile:
a:
@$(eval v1 = $(shell cat zfile1))
# need to process the variable here, example:
@echo "$(v1)"
# I want to prevent expansion of
我想知道是否有一种方法可以通过sh脚本在Java程序中输入值。例如,我有一个program.jar。我执行java -jar program.jar,它会输出:
Enter your name:
是否可以编写这样的sh脚本:
java -jar program
echo name
name将在哪里作为程序的输入?
在我的制造文件里,我有一个叫indent-fast的目标--
indent-fast:
# astyle --style=allman --indent=tab `find . -name "*.java"`
files=`find . -name "*.java"` ; \
for file in $$files ; do \
echo formatting $$file ; \
done ;\
# to do a whitesmith at 4 spaces, uncomment this line -
考虑一下这个小小的shell脚本。
# Save the first command line argument
cmd="$1"
# Execute the command specified in the first command line argument
out=$($cmd)
# Do something with the output of the specified command
# Here we do a silly thing, like make the output all uppercase
echo "$out" | tr -