小编Joh*_*Siu的帖子

如何使 bash glob 成为字符串变量?

系统信息

操作系统:OS X

bash:GNU bash,版本 3.2.57(1)-release (x86_64-apple-darwin16)

背景

我希望 Time Machine 从我的所有 git/nodejs 项目中排除一组目录和文件。我的项目目录在~/code/private/~/code/public/所以我试图使用 bash 循环来执行tmutil.

问题

精简版

如果我有一个计算的字符串变量k,我如何使它在 for 循环之前或之前 glob :

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
Run Code Online (Sandbox Code Playgroud)

在下面的长版本中,您将看到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
' …
Run Code Online (Sandbox Code Playgroud)

bash shell-script quoting wildcards

23
推荐指数
2
解决办法
3万
查看次数

标签 统计

bash ×1

quoting ×1

shell-script ×1

wildcards ×1