使用变量更改到file.sh所在的当前目录

时间:2014-02-05 01:09:30

标签: bash shell variables

我想要一个脚本,将目录更改为file.sh所在的目录,让我们说 var1
然后我想从另一个位置复制文件,比如说 var2 ,复制到当前的 var 目录。
然后我想在文件中进行一些解压缩和删除行,这些行将在 var

我已尝试过以下内容,但我的语法不正确。有人可以建议吗?

#!/bin/bash
# Configure bash so the script will exit if a command fails.
set -e 

#var is where the script is stored
var="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd";
#another dir I want to copy from
var2 = another/directory

#cd to the directory I want to copy my files to 
cd "$var" + /PointB  

#copy from var2 to the current location
#include the subdirectories 
cp -r var2 .

# This will unzip all .zip files in this dir and all subdirectories under this one.
# -o is required to overwrite everything that is in there
find -iname '*.zip' -execdir unzip -o {} \;

#delete specific rows 1-6 and the last one from the csv file
find ./ -iname '*.csv' -exec sed -i '1,6d;$ d' '{}' ';'

1 个答案:

答案 0 :(得分:1)

这里有一些错误:

# no: var="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd";
var=$(cd "$(dirname "$0") && pwd)

$()中的东西在子shell中执行,因此“pwd”必须在你“cd”-ed in的同一个shell中执行。

# no: var2 = another/directory
var2=another/directory

=周围没有空格。

# no: cd "$var" + /PointB  
cd "$var"/PointB  

shell不是javascript,字符串连接没有单独的运算符

# no: cp -r var2 .
cp -r "$var2" .

需要$来获取变量的值。

# no: find -iname '*.zip' -execdir unzip -o {} \;
find . -iname '*.zip' -execdir unzip -o {} \;

将起始目录指定为要查找的第一个参数。