shell中$1赋值给变量,此变量却是空的,为啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell中$1赋值给变量,此变量却是空的,为啥?相关的知识,希望对你有一定的参考价值。

FileName = $1
echo $1 >> /Users/beartech/Desktop/log.text
echo $FileName >> /Users/beartech/Desktop/log.text
这个几行代码,$1不为空,但是赋值给FileName,FileName却是空的,为什么啊?
自己找到答案了:
原因是头部问题
#!/bin/sh 修改成 #!/bin/bash 就好了

参考技术A 为了解决用户可能碰到关于"shell中$1赋值给变量,此变量却是空的,为什么?"相关的问题,突袭网经过收集整理为用户提供相关的解决办法,请注意,解决办法仅供参考,不代表本网同意其意见,如有任何问题请与本网联系。"shell中$1赋值给变量,此变量却是空的,为什么?"相关的详细问题如下: Users/ /log;Desktop/,$1不为空;beartech/.text
echo $FileName >.text
这个几行代码,FileName却是空的;Users/,为什么啊;log;>beartech/ /FileName = $1
echo $1 >,但是赋值给FileName;>Desktop/
参考技术B ./表示执行当前目录下某个可执行文件,这个文件不一定是bash脚本,但是sh方式就只能执行shell脚本,如果一个二进制可执行程序你用sh ./binExample这种方式执行,会报错的。 参考技术C get_msisdn()

CMONTH=`date +%m`
day=`date +%Y%m%d`
echo $day
echo "select goodsname from goods_info_08 where goodsname like '%SVC_20110816351%';" > /idep/test/query.sql

sqlplus idep_admin@idepdb/sxdb9876 @/idep/test/query.sql<<!
/
exit
!


### main ####
CHECK_DIR=/idep/test
get_msisdn

结果:
GOODSNAME
--------------------------------------------------------------------------------
SVC_20110816351
SVC_20110816351
SVC_20110816351
SVC_20110816351

SQL>
GOODSNAME
--------------------------------------------------------------------------------
SVC_20110816351
SVC_20110816351
SVC_20110816351
SVC_20110816351

SQL> Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

为什么会出现2次结果?
如何把输出的结果赋值给一个变量?
参考技术D  FileName=$1

赋值语句中不能有空格. 看看是不是这个问题.

怎么把shell后台输出赋值给变量

我有两个命令需要同时执行,输出结果赋值给两个变量,例子如下:
r0=`sleep 10;echo 10.0` &
r1=`sleep 10;echo 20.0` &
wait
echo $r0, $r1
结果显示:
,
怎么才能正常运行?

参考技术A 写一个a.sh脚本:

$ cat a.sh
#!/bin/bash

declare -i k
declare -i m
declare -a arr
k=0
m=0

rm -fr num.txt
touch num.txt
sleep 10;echo "10.0" >> num.txt; &
sleep 10;echo "20.0" >> num.txt; &
wait

while read line
do
arr[$k]=$line
((k++));
done < num.txt

while [ $m -lt $k ]
do
echo $arr[$m]
((m++))
done

运行它:
$ chmod +x a.sh

$ a.sh (或者 ./a.sh)
10.0
20.0

谢谢。因为不了解你的详细情况和需求。仅供参考。本回答被提问者和网友采纳

以上是关于shell中$1赋值给变量,此变量却是空的,为啥?的主要内容,如果未能解决你的问题,请参考以下文章

linux shell 截取内容,赋值给变量

awk的结果怎么赋值给Shell变量

怎么把shell后台输出赋值给变量

怎么把shell后台输出赋值给变量

shell变量重新赋值问题

shell环境变量与变量赋值