如何在 Bash 脚本中传递参数?
How to pass an argument in a Bash script?
我是运行剧本
#!/bin/bash -xv
billseqno=`sqlplus -s /@prod <<EOF
set heading off
set serveroutput off
select max(billseqno) from bc_run where control_group_ind is null;
EOF`
echo "$billseqno"
shark=`rsync --stats --dry-run -ax bill@shark:/home/$billseqno/ /home/temp/ | grep -i "number of files transferred" | cut -c30-`
其中$billseqno
表示文件夹名称,是一个数字。
我的问题是 $billseqno
的值没有传递到 rsync
路径。
有什么建议我该怎么办?
谢谢
您可以尝试使用
shark=$(rsync --stats --dry-run -ax bill@shark:/home/"${billseqno}"/ /home/temp/ | grep -i "number of files transferred" | cut -c30-)
并查看
- Backticks vs braces in Bash
- When to wrap quotes around a shell variable
我建议您将 SQL 查询更改为如下所示:
billseqno=$( sqlplus -s replacethis/@prod <<-EOF
set pagesize 0;
set feedback off;
set verify off;
set heading off;
select max(billseqno)
from bc_run
where control_group_ind is null;
exit;
EOF )
shark=$(rsync --stats --dry-run -ax bill@shark:/home/"$billseqno"/ /home/temp/ | grep -i "number of files transferred" | cut -c30-)
我是运行剧本
#!/bin/bash -xv
billseqno=`sqlplus -s /@prod <<EOF
set heading off
set serveroutput off
select max(billseqno) from bc_run where control_group_ind is null;
EOF`
echo "$billseqno"
shark=`rsync --stats --dry-run -ax bill@shark:/home/$billseqno/ /home/temp/ | grep -i "number of files transferred" | cut -c30-`
其中$billseqno
表示文件夹名称,是一个数字。
我的问题是 $billseqno
的值没有传递到 rsync
路径。
有什么建议我该怎么办?
谢谢
您可以尝试使用
shark=$(rsync --stats --dry-run -ax bill@shark:/home/"${billseqno}"/ /home/temp/ | grep -i "number of files transferred" | cut -c30-)
并查看
- Backticks vs braces in Bash
- When to wrap quotes around a shell variable
我建议您将 SQL 查询更改为如下所示:
billseqno=$( sqlplus -s replacethis/@prod <<-EOF
set pagesize 0;
set feedback off;
set verify off;
set heading off;
select max(billseqno)
from bc_run
where control_group_ind is null;
exit;
EOF )
shark=$(rsync --stats --dry-run -ax bill@shark:/home/"$billseqno"/ /home/temp/ | grep -i "number of files transferred" | cut -c30-)