如何在 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-)