在父级创建的新bash脚本中使用父bash脚本的某些变量的值

时间:2016-10-26 13:20:43

标签: bash shell scripting

我正在尝试从另一个bash脚本创建一个新的bash脚本(带有一些命令和变量),但问题是我需要一些特定于新脚本的变量以及我需要使用变量&# 39;父脚本的s值,现在只创建一个新的bash脚本,但不复制父脚本的值,而是复制整个变量。

# commnads ...... xyz for parent script

PATH="this/path/I/want/in/new/script"

echo "#### Setting up post-receive hooks ####"

cd hooks

cat >post-receive << 'EOF'
#!/bin/sh
read oldrev newrev ref

branchname=${ref#refs/heads/}

# the path is actually for first script, how I can get the value for PATH only
GIT_WORK_TREE=$PATH git checkout ${branchname} -f
EOF
chmod +x post-receive

这是正在创建的文件,

#!/bin/sh
read oldrev newrev ref

branchname=${ref#refs/heads/}

GIT_WORK_TREE=$PATH git checkout ${branchname} -f
               #^ i need the actual value here not the variable

2 个答案:

答案 0 :(得分:2)

您引用了此处的文档分隔符,因此您禁用了所有参数扩展,包括<android.support.percent.PercentRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView app:layout_widthPercent="50%" app:layout_heightPercent="50%" app:layout_marginTopPercent="25%" app:layout_marginLeftPercent="25%"/> </android.support.percent.PercentRelativeLayout> 。如果要扩展任何参数,则必须保留分隔符不加引号,并明确地将$PATH转义为不希望展开的分隔符。

由于您实际上并不想覆盖 $,因此请勿使用PATH作为变量名称;使用小写名称。

PATH

答案 1 :(得分:-2)

在要运行的部件周围放置单个括号并从中获取值。单个括号运行子shell中的任何内部,然后将其作为值返回。

    GIT_WORK_TREE=$($PATH git checkout ${branchname} -f)