시스템 정보
운영체제 : OS X
bash : GNU bash, 버전 3.2.57 (1)-릴리스 (x86_64-apple-darwin16)
배경
Time Machine에서 모든 git / nodejs 프로젝트에서 디렉토리 및 파일 세트를 제외하고 싶습니다. 내 프로젝트 디렉토리에있는 ~/code/private/
그리고 ~/code/public/
내가 할 루프 bash에 사용하려고 해요 그래서 tmutil
.
발행물
짧은 버전
계산 된 string 변수 가있는 경우 k
for 루프 앞이나 오른쪽으로 가져 가려면 어떻게해야합니까?
i='~/code/public/*'
j='*.launch'
k=$i/$j # $k='~/code/public/*/*.launch'
for i in $k # I need $k to glob here
do
echo $i
done
아래 긴 버전에서는을 볼 수 k=$i/$j
있습니다. 따라서 for 루프에서 문자열을 하드 코딩 할 수 없습니다.
긴 버전
#!/bin/bash
exclude='
*.launch
.classpath
.sass-cache
Thumbs.db
bower_components
build
connect.lock
coverage
dist
e2e/*.js
e2e/*.map
libpeerconnection.log
node_modules
npm-debug.log
testem.log
tmp
typings
'
dirs='
~/code/private/*
~/code/public/*
'
for i in $dirs
do
for j in $exclude
do
k=$i/$j # It is correct up to this line
for l in $k # I need it glob here
do
echo $l
# Command I want to execute
# tmutil addexclusion $l
done
done
done
산출
그들은 움켜 쥐지 않았다. 내가 원하는 것이 아닙니다.
~/code/private/*/*.launch
~/code/private/*/.DS_Store
~/code/private/*/.classpath
~/code/private/*/.sass-cache
~/code/private/*/.settings
~/code/private/*/Thumbs.db
~/code/private/*/bower_components
~/code/private/*/build
~/code/private/*/connect.lock
~/code/private/*/coverage
~/code/private/*/dist
~/code/private/*/e2e/*.js
~/code/private/*/e2e/*.map
~/code/private/*/libpeerconnection.log
~/code/private/*/node_modules
~/code/private/*/npm-debug.log
~/code/private/*/testem.log
~/code/private/*/tmp
~/code/private/*/typings
~/code/public/*/*.launch
~/code/public/*/.DS_Store
~/code/public/*/.classpath
~/code/public/*/.sass-cache
~/code/public/*/.settings
~/code/public/*/Thumbs.db
~/code/public/*/bower_components
~/code/public/*/build
~/code/public/*/connect.lock
~/code/public/*/coverage
~/code/public/*/dist
~/code/public/*/e2e/*.js
~/code/public/*/e2e/*.map
~/code/public/*/libpeerconnection.log
~/code/public/*/node_modules
~/code/public/*/npm-debug.log
~/code/public/*/testem.log
~/code/public/*/tmp
~/code/public/*/typings
k
계산 된 문자열이며 루프까지 계속 유지해야합니다. 내 긴 버전을 확인하십시오.