Solved

how do you keep $ dollar sign untouched within a script you touch by ssh?

Posted on 2010-09-01
3
529 Views
Last Modified: 2012-05-10
I have a script that needs altering via an ssh touch command.  Within this script is a $2 that needs to stay intact but the ssh command is thinking it's a variable and it disappears.  How do I keep this $ intact?  Here's my ssh command and code below:

You can see various $ within the script being edited.  The main ones like ${dir} are already good to go.  I'm mainly looking at lines 56-58 where it has    $2
rm /home/atest/www/.htaccess

touch /home/atest/public_html/"$dir".htaccess
echo "# $Id: .htaccess  1 2003/06/12 10:53:20 Michael Sasek$
#
# This is used with Apache WebServers
#
# For this to work, you must include the parameter 'Options' to
# the AllowOverride configuration
#
# Example:
#
# <Directory "/usr/local/apache/htdocs">
#   AllowOverride Options
# </Directory>
#
# 'All' with also work. (This configuration is in the
# apache/conf/httpd.conf file)

# The following makes adjustments to the SSL protocol for Internet
# Explorer browsers

<IfModule mod_setenvif.c>
  <IfDefine SSL>
    SetEnvIf User-Agent ".*MSIE.*" \
             nokeepalive ssl-unclean-shutdown \
             downgrade-1.0 force-response-1.0
  </IfDefine>
</IfModule>

# If Search Engine Friendly URLs do not work, try enabling the
# following Apache configuration parameter
#
# AcceptPathInfo On

# Fix certain PHP values
# (commented out by default to prevent errors occuring on certain
# servers)
#
<IfModule mod_php5.c>
  php_value session.use_trans_sid 0

</IfModule>
## SEO Url's .htaccess file
## If you want to use the Apache Mod-Rewrite method for SEO URL's
## Uncomment one of the two code blocks below, depending on where your store is installed:
## NOTE: This requires that you are on an apache web server with mod_rewrite enabled.

## If installed in a subfolder, uncomment the below block and change /folder/ to
## The directory where your shop is installed. For instance, if installed in the catalog directory
## Change it to /catalog/

RewriteEngine On
# Change "folder" to your catalog directory name
RewriteBase /${dir}
RewriteRule ^(.*)-p-(.*).html$ product_info.php?products_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-c-(.*).html$ index.php?cPath=$2&%{QUERY_STRING}
RewriteRule ^(.*)-m-(.*).html$ index.php?manufacturers_id=$2&%{QUERY_STRING}

## If installed to the base home/root directory, uncomment the below code only:


## BOF change for dynamic pages stored in the database
RewriteRule index.html index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*).html$ information.php?page_alias=$1
## EOF change for dynamic pages stored in the database" > /home/atest/public_html/"$dir".htaccess

Open in new window

0
Comment
Question by:allwebnow
3 Comments
 
LVL 68

Accepted Solution

by:
woolmilkporc earned 500 total points
ID: 33579705
RewriteRule ^(.*)-p-(.*).html\$ product_info.php?products_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-c-(.*).html\$ index.php?cPath=$2&%{QUERY_STRING}
RewriteRule ^(.*)-m-(.*).html\$ index.php?manufacturers_id=$2&%{QUERY_STRING}

which means: protect the concerned $ signs from being expanded by the shell using a backslash ( \ ) just in front of them.
Use this method to protect any character which needs it.

wmp

0
 

Author Comment

by:allwebnow
ID: 33579733
That was wonderful!  I knew it was something like that.  Just didn't know what the method character was.
0
 
LVL 9

Expert Comment

by:svs
ID: 33579762
Either use single quotes, or a here-document construct, like this:

cat > /home/atest/public_html/"$dir".htaccess <<"_EOF"
# $Id: .htaccess  1 2003/06/12 10:53:20 Michael Sasek$
#
# This is used with Apache WebServers
...
_EOF

See also http://tldp.org/LDP/abs/html/here-docs.html
0

Featured Post

Windows Server 2016: All you need to know

Learn about Hyper-V features that increase functionality and usability of Microsoft Windows Server 2016. Also, throughout this eBook, you’ll find some basic PowerShell examples that will help you leverage the scripts in your environments!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

SSH (Secure Shell) - Tips and Tricks As you all know SSH(Secure Shell) is a network protocol, which we use to access/transfer files securely between two networked devices. SSH was actually designed as a replacement for insecure protocols that sen…
It’s 2016. Password authentication should be dead — or at least close to dying. But, unfortunately, it has not traversed Quagga stage yet. Using password authentication is like laundering hotel guest linens with a washboard — it’s Passé.
Learn several ways to interact with files and get file information from the bash shell. ls lists the contents of a directory: Using the -a flag displays hidden files: Using the -l flag formats the output in a long list: The file command gives us mor…
Get a first impression of how PRTG looks and learn how it works.   This video is a short introduction to PRTG, as an initial overview or as a quick start for new PRTG users.

895 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now