我正在尝试使用变量在find命令中指定排除路径.
此代码段有效:
x="*test/.util/*"
y="*test/sh/*"
find test -type f -name "*.sh" -not -path "$x" -not -path "$y"
Run Code Online (Sandbox Code Playgroud)
但是我想-not -path进入变量,如:
x="-not -path *test/.util/*"
y="-not -path *test/sh/*"
# error: find: -not -path *test/.util/*: unknown primary or operator
find test -type f -name "*.sh" "$x" "$y"
# Tried removing quotes
# error: find: test/.util/foo.sh: unknown primary or operator
find test -type f -name "*.sh" $x $y
Run Code Online (Sandbox Code Playgroud)
我还尝试在变量中的路径中添加引号,但这不会导致路径过滤.
# no syntax error but does not exclude the paths
x="-not -path '*test/.util/*'" …Run Code Online (Sandbox Code Playgroud) 我有这样一个bash脚本.我想将目录下的gzip所有.ppm文件转到另一个目录.出于这个原因,我写了这样一个bash脚本:
cd /export/students/sait/12-may
for next_file in $(find . -type f ! -name *.ppm )
do
/bin/gzip -f -c $next_file > /export/students/sait/12-may-yedek/$next_file.gz
done
Run Code Online (Sandbox Code Playgroud)
当我执行这个脚本时,我得到这样的错误:
/usr/bin/find: Argument list too long
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
我知道有很多与此相关的帖子,但对我没有任何帮助。
我正在尝试在PowerShell中运行以下命令行:
C:/Program Files (x86)/ClamWin/bin/clamd.exe --install
Run Code Online (Sandbox Code Playgroud)
我在PowerShell中有这个:
&"C:/Program Files (x86)/ClamWin/bin/clamd.exe --install"
Run Code Online (Sandbox Code Playgroud)
但这只是执行clamd.exe,忽略--install参数
如何获得完整的命令行来运行?
我在bash中遇到了一个相当神秘的错误,我怀疑它与shell扩展规则有关.
这就是故事:在工作中,我的任务是记录一个用于协调公司资源的大型内部网站.不幸的是,代码非常难看,因为它已经超出了它的原始目的,并"演变"为协调公司工作的主要资源.
大多数代码都是PHP.我写了一些帮助脚本来帮助我编写文档; 例如,一个脚本提取php函数中使用的所有全局php变量.
所有这些脚本的核心是"extract_function.sh"脚本.基本上,给定一个php函数名称和一个php源文件,它提取并输出该php函数.
现在问题出现了:不知何故,当脚本提取函数时,它基本上是在输出中ls /随机插入输出.
例如:
$ ./extract_function my_function my_php_file.php
function my_function {
// php code
/etc
/bin
/proc
...
// more php code
}
Run Code Online (Sandbox Code Playgroud)
更令人困惑的是,我只是从一个特定文件中获得了一个特定功能!现在,因为功能非常庞大(500多行,我的意思是当我说代码很丑!)时,我无法让我的生活找出造成这种情况的原因,或者想出来一个更简单的ad-hoc函数来产生这种行为.此外,公司政策阻止我分享实际代码.
但是,这是我的代码:
#!/usr/bin/env bash
program_name=$(basename $0);
function_name=$1;
file_name=$2;
if [[ -z "$function_name" ]]; then
(>&2 echo "Usage: $program_name function_name [file]")
exit 1
fi
if [[ -z "$file_name" ]] || [ "$file_name" = "-" ]; then
file_name="/dev/stdin";
fi
php_lexer_file=$(mktemp)
trap "rm -f $php_lexer_file" EXIT
read -r -d '' php_lexer_text << 'EOF'
<?php …Run Code Online (Sandbox Code Playgroud) 我的代码是:
#!/bin/bash
if [ $1 -gt $2 ];then
echo $1 > $2
fi
if [ $1 -eq $2 ];then
echo $1 = $2
fi
if [ $1 -lt $2 ];then
echo $1 < $2
fi
Run Code Online (Sandbox Code Playgroud)
通过./script.sh 3 56我得到的响应执行脚本是
./script.sh: line 9: 56: No such file or directory.我有权执行该脚本.我是bash编程和使用linux的新手.请告诉我如何修复我的脚本.
这些命令如何导致不同的输出?
?> ssh host bash -c 'cd /tmp; pwd'
/home/manu
?> ssh host "bash -c 'cd /tmp; pwd'"
/tmp
Run Code Online (Sandbox Code Playgroud)
这里对类似问题的回答指出:
尾随参数组合成一个字符串,该字符串作为参数传递给远程计算机上登录shell的-c选项.
如果*我能理解这一点,但在这个例子中本地评估哪个部分?此外,--在bash命令之前没有帮助.
新手在这里打击.我希望在bash中为一个变量添加一个空格,目前我有以下内容,它似乎不起作用:
space=`printf '%1s' ' '`
mystr='hello'
mystr="$space$mystr"
echo $mystr
Run Code Online (Sandbox Code Playgroud)
因此,我不希望打印出"hello",而是希望结果是"hello",它在开头有一个额外的空格.这样做的正确方法是什么?谢谢.
我正在努力使用dplyrR中的编程来操作数据帧的列,这些列只能通过它们的字符串名称来识别.我知道最近有一个dplyr支持quouts等的更新,我在这里回顾了我认为新的"用dplyr编程"一文的相关组成部分:http://dplyr.tidyverse.org/articles/programming .html.但是,我仍然无法做我想做的事.
我的情况是我只知道数据框的字符串名称.因此,我无法dplyr在函数内调用甚至是在运行之间列名可能会更改的脚本中使用非标准求值,因为我不能硬编码未加引号(即"裸")列名称.我想知道如何解决这个问题,我猜我用新的引用/取消引用语法忽略了一些东西.
例如,假设我有用户输入来定义数据分布的截止百分位数.用户可以使用他/她想要的任何百分位来运行代码,并且他/她选择的百分位将改变输出.在分析中,使用所使用的百分位名称创建中间数据框中的列; 因此,该列的名称根据用户输入的截止百分位数而变化.
下面是一个最小的例子来说明.我想用截止百分位数的各种值来调用函数.我希望命名的数据框MPGCutoffs有一个根据所选截止分位数命名的列(这当前在下面的代码中有效),我想稍后对这个列名进行操作.由于这个列名的一般性,我只能在pctCutoff编写函数时根据输入知道它,所以我需要一种方法来操作它,只知道定义的字符串probColName,它遵循基于预定义的模式关于价值pctCutoff.
userInput_prob1 <- 0.95
userInput_prob2 <- 0.9
# Function to get cars that have the "best" MPG
# fuel economy, where "best" is defined by the
# percentile cutoff passed to the function.
getBestMPG <- function( pctCutoff ){
# Define new column name to hold the MPG percentile cutoff.
probColName <- paste0('P', pctCutoff*100)
# Compute the MPG percentile …Run Code Online (Sandbox Code Playgroud) 我有以下命令行来检查文件系统的可用空间:
fs_used=`df -h /u01 | sed '1d' | sed '1d' | awk '{print $4}' | cut -d'%' -f1`
Run Code Online (Sandbox Code Playgroud)
它工作正常.它返回文件系统上已用空间的百分比(不带%符号).
现在我需要使它变量并使用eval命令运行它.我尝试了以下但它不起作用(退出df:无效选项 - 'd')
df_cmnd="df -h $fs1 | sed '1d' | sed '1d' | awk '{print $4}' | cut -d'%' -f1"
fs_used=eval $df_cmnd
Run Code Online (Sandbox Code Playgroud)
我想,问题是eval无法运行管道命令.真的吗?是否有任何解决方法或替代方法来运行此代码?
我正在尝试使用编写git过滤器sed
[filter "revisioner"]
smudge = sed -e "s/\\\$Revision\\\$/\$Revision: $(GIT_EXEC_PATH=/usr/lib/git-core/ git describe --tag svn)\$/g"
clean = sed -e "s/\\\$Revision: [^$]*\\\$/\$Revision\$/g"
Run Code Online (Sandbox Code Playgroud)
为了sed做正确的事情,它想要有一个奇数\来逃避$,但是git抱怨奇数的\:
Run Code Online (Sandbox Code Playgroud)fatal: bad config line 2 in file .git/../.gitconfig
我真的不想将我的sed脚本移动到外部命令中,因为它是用户在使用我的存储库之前需要在他们的系统上设置的另一个移动部件.
有什么建议?