我正在尝试从另一个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
答案 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)