Using basic sed in bash script [closed] - bash

Closed. This question is not reproducible or was caused by typos. It is not currently accepting answers.
This question was caused by a typo or a problem that can no longer be reproduced. While similar questions may be on-topic here, this one was resolved in a way less likely to help future readers.
Closed 4 years ago.
Improve this question
I'm sure this is quite simple. However, it's just not working for me. What stupid thing am I doing wrong please? I am running the following shell script like this:
bash test1.sh
Here's the code:
#!/bin/bash
bluesman_a="Magic Slim"
bluesman_b=($echo "$bluesman_a" | sed "/s/Slim/Sam/")
echo $bluesman_b
I get:
syntax error near unexpected token `|'
Thanks for your time

You need to use "$(...)" to wrap a command to assign the output to a variable and you need to remove the first / in the sed replacement command. Also, you do not need to use echo to pass a variable to sed.
bluesman_b="$(sed 's/Slim/Sam/' <<< "$bluesman_a")"
Or, to replace Slim with Sam just once, use
bluesman_b="${bluesman_a/Slim/Sam}"
See 10.1. Manipulating Strings.
See the online Bash demo

Related

Xcode cannot locate ruby script during run phase [closed]

Closed. This question is not reproducible or was caused by typos. It is not currently accepting answers.
This question was caused by a typo or a problem that can no longer be reproduced. While similar questions may be on-topic here, this one was resolved in a way less likely to help future readers.
Closed 2 years ago.
Improve this question
command:
/usr/bin/ruby “${SRCROOT}/generate-games.rb” “${SRCROOT}/sample-data.csv”
error: /usr/bin/ruby: No such file or directory --
“/Users/rays/Desktop/GenerateTestData/generate-games.rb” (LoadError)
Command PhaseScriptExecution failed with a nonzero exit codet I
Yet I confirmed the script is where it should be.
You are using UTF-8 quotes: “...” instead of standard ASCII quotes "...". Your shell will will only recognize ASCII quotes as delimiters, and therefore will interpret the UTF-8 quotes as part of the file name (which they obviously are not).
Conclusion:
Fix your quotes and that should fix your problem.

Curl does not work when passes in variable from file [closed]

Closed. This question is not reproducible or was caused by typos. It is not currently accepting answers.
This question was caused by a typo or a problem that can no longer be reproduced. While similar questions may be on-topic here, this one was resolved in a way less likely to help future readers.
Closed 2 years ago.
Improve this question
I am not sure why using the variable inited from a file does not work.
I wrote a function to CURL a list of domains from a file (only one line at this time, www.google.com). But the CURL returns empty when the $domain is read from the file. When I echo $localvar, it always displays the correct value (www.google.com in this case).
I hardcoded "www.google.com" for a test, the CURL did return the page as expected.
What did I miss? Thanks in advance!
Bash version 3.2.57(1)-release
#!/bin/bash
function processDomains() {
local inputfilepath=$1;
while read domain
do
local localvar="$domain"
#localvar="www.google.com" --- uncomment this line the curl command works
#echo $localvar --- always display domain correctly
local result=$(curl -sL "$localvar");
echo "$domain" "$result"
done < $inputfilepath
}
Jonathan's comment answered my question. It was caused by the CRLF ending from the file.

Bash quotes command not found [closed]

Closed. This question is not reproducible or was caused by typos. It is not currently accepting answers.
This question was caused by a typo or a problem that can no longer be reproduced. While similar questions may be on-topic here, this one was resolved in a way less likely to help future readers.
Closed 3 years ago.
Improve this question
I copied and running the command on my ubuntu 18.04 from here
https://kite.com/linux/ but got an error like:
$ bash -c “$(wget -q -O – https://linux.kite.com/dls/linux/current)”
bash: “”: command not found
$ type quote
quote is a function
quote ()
{
local quoted=${1//\'/\'\\\'\'};
printf "'%s'" "$quoted"
}
Any suggestions of the error?
You probably copied and pasted that from some word processor or website that turned the straight, regular, ASCII quotes " into pretty, curly Unicode quotes “ ”. Bash doesn't understand those. Just type them in by hand to fix the problem.

Bash syntax error: line 7: unexpected end of file [closed]

Closed. This question is not reproducible or was caused by typos. It is not currently accepting answers.
This question was caused by a typo or a problem that can no longer be reproduced. While similar questions may be on-topic here, this one was resolved in a way less likely to help future readers.
Closed 8 years ago.
Improve this question
So I have a bash script
!#/bin/bash
while [ true ];do
ls -lah /sth/ | grep sth*
sleep 0.001
done
exit 0
I thoought thai it was ok but when I run it I get
line 7: syntax error: unexpected end of file
But the code has only 6 lines?
What may be a problem? I edited the file in linux, deleted unnecessary spaces but still my scropt doesn't work.
The shebang line is wrong. You are not running it under Bash at all.
#!/bin/bash
Notice the order of the sharp (#) and the bang (!).

[-d: command not found [closed]

Closed. This question is not reproducible or was caused by typos. It is not currently accepting answers.
This question was caused by a typo or a problem that can no longer be reproduced. While similar questions may be on-topic here, this one was resolved in a way less likely to help future readers.
Closed 8 years ago.
Improve this question
As per this answer: Unix Bash Shell Programming if directory exists, I'm trying to check if a directory exists. However, when I run this, I get line 1: [-d: command not found. What am I doing wrong here?
if [-d "~/.ssl"]; then
echo '~/.ssl directory already exists'
else
sudo mkdir ~/.ssl/
fi
[-d
is not a command.
[ -d
is the test command with the -d option.
Space matters.
(Also, the [ command needs to end with a ] parameter, which likewise has to be separated from other arguments by whitespace.)
That's the crux of the matter. There is another issue, though: If you quote the tilde, it doesn't expand. (This is one of the rare place where you may want to avoid quotes.) Quotes are great, though, so why not write "$HOME/.ssl"? (There's a subtle difference between ~ and "$HOME", but it doesn't matter for most uses.)
Honestly, all you really need is probably:
if mkdir -p ~/.ssl; then
# Do stuff with new directory
else
# Handle failure (but keep in mind `mkdir` will have its own error output)
fi

Resources